Groovy - Grab - download failed

前端 未结 7 1090
梦如初夏
梦如初夏 2020-12-08 09:29

I have a fresh installation of Groovy 2.1.4 and I\'d like to create a script that uses HTTP builder.

I\'ve added the following line at the top of the script:

相关标签:
7条回答
  • 2020-12-08 09:48

    My problem was, groovy (v2.4.8) was looking in the maven repository fist (~/.m2/repository/) and finding the pom file but not finding the associated artifact/JAR. Instead of just moving on to the next resolver, which would have succeeded, it just gives up. The workaround would be to remove the pom file, the specific directory cache, or just temporarily rename the repository and run groovy again as other suggested. Or you could try to manually add it to the repository. But these are just temporary and you'll likely run into the issue again if you clear your groovy cache or with another dependency.

    To troubleshoot this issue you can turn on verbose logging and try to manually install the dependency. So if your error is something like:

    java.lang.RuntimeException: Error grabbing Grapes -- [download failed: commons-logging#commons-logging;1.1.1!commons-logging.jar, download failed: commons-codec#commons-codec;1.6!commons-codec.jar, download failed: commons-lang#commons-lang;2.4!commons-lang.jar]
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    

    Which means your dependency is commons-logging-1.1.1.jar. You can run:

    grape -V install commons-logging commons-logging 1.1.1

    What ended up solving the problem for me was overriding the default configuration and setting usepoms="false" in the localm2 resolver. It works in my case because I have the pom but not the JAR, so since Ivy isn't considering the POM now and the JAR was never there to begin with, it goes onto the next resolver which does find it. So in summary:

    • Create this file: ~/.groovy/grapeConfig.xml
    • With these contents:

    <ivysettings>
      <settings defaultResolver="downloadGrapes"/>
      <resolvers>
    	<chain name="downloadGrapes" returnFirst="true">
    	  <filesystem name="cachedGrapes">
    		<ivy pattern="${user.home}/.groovy/grapes/[organisation]/[module]/ivy-[revision].xml"/>
    		<artifact pattern="${user.home}/.groovy/grapes/[organisation]/[module]/[type]s/[artifact]-[revision](-[classifier]).[ext]"/>
    	  </filesystem>
    	  <ibiblio name="localm2" root="file:${user.home}/.m2test/repository/" checkmodified="true" changingPattern=".*" changingMatcher="regexp" m2compatible="true" usepoms="false"/>
    	  <ibiblio name="jcenter" root="https://jcenter.bintray.com/" m2compatible="true"/>
    	  <ibiblio name="ibiblio" m2compatible="true"/>
    	</chain>
      </resolvers>
    </ivysettings>

    I was tempted not to use the maven 2 cache at all, but if I removed the line, I got errors about not being able to find "localm2". Although updating it to point to fictitious directory worked.

    0 讨论(0)
  • 2020-12-08 09:57

    I had a similar error when using Groovy + Java 7. The error from groovy was:

    General error during conversion: Error grabbing Grapes -- [unresolved dependency: com.microsoft.sqlserver#mssql-jdbc;6.4.0.jre7: not found]

    When trying the

    grape -V resolve com.microsoft.sqlserver mssql-jdbc 6.4.0.jre7

    command i had these errors:

    1. java.net.SocketException: Connection reset
    2. javax.net.ssl.SSLException: Received fatal alert: protocol_version

    The way to fix this was adding the -Dhttps.protocols=TLSv1.2 parameter:

    grape -Dhttps.protocols=TLSv1.2 -V resolve com.microsoft.sqlserver mssql-jdbc 6.4.0.jre7

    Then the package is downloaded and i can use it from Groovy

    0 讨论(0)
  • 2020-12-08 10:01

    Try deleting ~/.m2 directory and also ~/.groovy/grapes directories.

    It worked for me.

    0 讨论(0)
  • 2020-12-08 10:02

    this might help someone down the line as i faced similar issue in windows

    java.lang.RuntimeException: Error grabbing Grapes -- [download failed: commons-collections#commons-collections;3.2.2!commons-collections.jar]

    the required jar above was not being downloaded in C:/Users/%USER%/.groovy/grapes/common-collections/jars/ folder.
    so manually downloaded the required version from https://jar-download.com/
    and added in the corresponding folder

    0 讨论(0)
  • 2020-12-08 10:07

    It looks like your Grape settings are set only to look in your local .m2 directory for the library. Check your grapeConfig.xml configuration file. (If you don't have one, you can create it--it should go in the same directory where your groovysh.history and grapes cache directory are created by Groovy.) You can copy the example file shown on the Groovy Grape reference page.

    If that doesn't help, I would try deleting your grapes cache directory and try it again.

    0 讨论(0)
  • 2020-12-08 10:09

    Not quite the same case as the question, adding it in case someone finds himself in a similar case with me where I did not have any direct access on the machine to check the grapeConfig.xml configuration file, as suggested by the accepted answer. What worked for me was to configure a grab resolver.

    I did something similar with what is stated in the documentation and it worked (documentation link):

    @GrabResolver(name='restlet', root='http://maven.restlet.org/')
    @Grab(group='org.restlet', module='org.restlet', version='1.1.6')
    
    0 讨论(0)
提交回复
热议问题