[
https://issues.apache.org/jira/browse/GROOVY-9376?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17029053#comment-17029053
]
Eric Milles edited comment on GROOVY-9376 at 2/3/20 3:56 PM:
-------------------------------------------------------------
{{@GrabResolver}} resolvers are added by {{groovy.grape.Grape#addResolver}}
which delegates to {{groovy.grape.GrapeIvy#addResolver}}. At the moment, extra
resolvers end up at the end of the chain. You could use
{{chainResolver.getResolvers().add(0, resolver)}} instead of {{add(resolver)}}.
was (Author: emilles):
{{@GrabResolver}}s are added by {{groovy.grape.Grape#addResolver}} which
delegates to {{groovy.grape.GrapeIvy#addResolver}}. At the moment, extra
resolves end up at the end of the chain. You could use
{{chainResolver.getResolvers().add(0, resolver)}} instead of {{add(resolver)}}.
> Groovy completely ignores @GrabResolver annotation
> --------------------------------------------------
>
> Key: GROOVY-9376
> URL: https://issues.apache.org/jira/browse/GROOVY-9376
> Project: Groovy
> Issue Type: Bug
> Reporter: Damian Szuberski
> Priority: Major
>
> Steps to reproduce inside docker. Repository added using GrabResolver is
> completely ignored during resolution and fetching.
>
> Manually putting repository location into ~/.groovy/grapeConfig.xml solves
> the problem and make the custom repository work properly. Tested on Groovy
> 2.5.x and Groovy 3.x, both have the same issue. This example comes from
> docker container *groovy:3.0.0-rc-3-jre8*
>
> *root@40bc8b504667:~# rm -rf ~/.ivy* ~/.groovy**
> *root@40bc8b504667:~# cat example.groovy*
> {code:java}
> #!/usr/bin/env groovy
> @GrabResolver(name='restlet.org', root='http://maven.restlet.org')
> @Grab(group='org.restlet', module='org.restlet', version='1.1.6')
> import org.restlet.Restlet;
> {code}
> *root@40bc8b504667:~# groovy -Dgroovy.grape.report.downloads=true
> -Divy.message.logger.level=4 example.groovy*
> {noformat}
> setting 'ivy.default.settings.dir' to
> 'jar:[file:/opt/groovy/lib/ivy-2.5.0.jar!/org/apache/ivy/core/settings'
> setting 'ivy.basedir' to '/root/.'
> setting 'ivy.default.conf.dir' to
> 'jar:[file:/opt/groovy/lib/ivy-2.5.0.jar!/org/apache/ivy/core/settings'
> setting 'java.runtime.name' to 'OpenJDK Runtime Environment'
> setting 'sun.boot.library.path' to '/opt/java/openjdk/lib/amd64'
> setting 'java.vm.version' to '25.232-b09'
> setting 'groovy.grape.report.downloads' to 'true'
> setting 'java.vm.vendor' to 'AdoptOpenJDK'
> setting 'java.vendor.url' to 'http://java.oracle.com/'
> setting 'path.separator' to ':'
> setting 'java.vm.name' to 'OpenJDK 64-Bit Server VM'
> setting 'file.encoding.pkg' to 'sun.io'
> setting 'user.country' to 'US'setting 'sun.java.launcher' to 'SUN_STANDARD'
> setting 'sun.os.patch.level' to 'unknown'
> setting 'program.name' to 'groovy'
> setting 'java.vm.specification.name' to 'Java Virtual Machine Specification'
> setting 'user.dir' to '/root'
> setting 'java.runtime.version' to '1.8.0_232-b09'
> setting 'java.awt.graphicsenv' to 'sun.awt.X11GraphicsEnvironment'
> setting 'java.endorsed.dirs' to '/opt/java/openjdk/lib/endorsed'
> setting 'os.arch' to 'amd64'
> setting 'java.io.tmpdir' to '/tmp'
> setting 'line.separator' to ''
> setting 'java.vm.specification.vendor' to 'Oracle Corporation'
> setting 'os.name' to 'Linux'
> setting 'tools.jar' to '/opt/java/openjdk/lib/tools.jar'
> setting 'sun.jnu.encoding' to 'UTF-8'
> setting 'script.name' to '/usr/bin/groovy'
> setting 'java.library.path' to
> '/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib'
> setting 'java.specification.name' to 'Java Platform API Specification'
> setting 'java.class.version' to '52.0'
> setting 'sun.management.compiler' to 'HotSpot 64-Bit Tiered Compilers'
> setting 'os.version' to '5.4.0-3-amd64'
> setting 'user.home' to '/root'
> setting 'user.timezone' to ''
> setting 'java.awt.printerjob' to 'sun.print.PSPrinterJob'
> setting 'file.encoding' to 'UTF-8'
> setting 'java.specification.version' to '1.8'
> setting 'java.class.path' to '/opt/groovy/lib/groovy-3.0.0-rc-3.jar'
> setting 'user.name' to 'root'
> setting 'ivy.message.logger.level' to '4'
> setting 'java.vm.specification.version' to '1.8'
> setting 'sun.java.command' to 'org.codehaus.groovy.tools.GroovyStarter --main
> groovy.ui.GroovyMain --conf /opt/groovy/conf/groovy-starter.conf --classpath
> . -Dgroovy.grape.report.downloads=true -Divy.message.logger.level=4
> example.groovy'
> setting 'java.home' to '/opt/java/openjdk'
> setting 'sun.arch.data.model' to '64'
> setting 'user.language' to 'en'
> setting 'java.specification.vendor' to 'Oracle Corporation'
> setting 'awt.toolkit' to 'sun.awt.X11.XToolkit'
> setting 'java.vm.info' to 'mixed mode'
> setting 'java.version' to '1.8.0_232'
> setting 'java.ext.dirs' to
> '/opt/java/openjdk/lib/ext:/usr/java/packages/lib/ext'
> setting 'sun.boot.class.path' to
> '/opt/java/openjdk/lib/resources.jar:/opt/java/openjdk/lib/rt.jar:/opt/java/openjdk/lib/sunrsasign.jar:/opt/java/openjdk/lib/jsse.jar:/opt/java/openjdk/lib/jce.jar:/opt/java/openjdk/lib/charsets.jar:/opt/java/openjdk/lib/jfr.jar:/opt/java/openjdk/classes'
> setting 'java.vendor' to 'AdoptOpenJDK'
> setting 'file.separator' to '/'
> setting 'groovy.jaxb' to 'jaxb'
> setting 'java.vendor.url.bug' to 'http://bugreport.sun.com/bugreport/'
> setting 'sun.io.unicode.encoding' to 'UnicodeLittle'
> setting 'sun.cpu.endian' to 'little'
> setting 'groovy.starter.conf' to '/opt/groovy/conf/groovy-starter.conf'
> setting 'groovy.home' to '/opt/groovy'
> setting 'sun.cpu.isalist' to ''
> setting 'user.home.url' to 'file:/root/':: loading settings :: url =
> jar:[file:/opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape/defaultGrapeConfig.xmlsetting|file://opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape/defaultGrapeConfig.xmlsetting]
> 'ivy.settings.url' to
> 'jar:[file:/opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape/defaultGrapeConfig.xml'setting|file://opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape/defaultGrapeConfig.xml'setting]
> 'ivy.conf.url' to
> 'jar:[file:/opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape/defaultGrapeConfig.xml'setting|file://opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape/defaultGrapeConfig.xml'setting]
> 'ivy.settings.dir' to
> 'jar:[file:/opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape'setting|file://opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape'setting]
> 'ivy.settings.dir.url' to
> 'jar:[file:/opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape'setting|file://opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape'setting]
> 'ivy.conf.dir' to
> 'jar:[file:/opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape'setting|file://opt/groovy/lib/groovy-3.0.0-rc-3.jar!/groovy/grape'setting]
> 'ivy.default.ivy.user.dir' to '/root/.ivy2'setting 'ivy.home' to
> '/root/.ivy2'
> no default ivy user dir defined: set to /root/.ivy2
> setting 'ivy.log.modules.in.use' to 'false'
> setting 'ivy.resolver.default.check.modified' to 'false'
> setting 'ivy.default.always.check.exact.revision' to 'false'
> setting 'ivy.retrieve.pattern' to
> '${ivy.lib.dir}/[artifact]-[revision](-[classifier]).[ext]'
> setting 'ivy.configurations' to '*'
> setting 'ivy.buildlist.ivyfilepath' to 'ivy.xml'
> setting 'ivy.status' to 'integration'
> setting 'ivy.resolve.default.type.filter' to '*'
> setting 'ivy.project.dir' to '${basedir}'
> setting 'ivy.dep.file' to 'ivy.xml'
> setting 'ivy.settings.file' to 'ivysettings.xml'
> setting 'ivy.report.output.pattern' to '[organisation]-[module]-[conf].[ext]'
> setting 'ivy.cache.ttl.default' to '10s'
> setting 'ivy.publish.src.artifacts.pattern' to
> '${ivy.distrib.dir}/[type]s/[artifact]-[revision](-[classifier]).[ext]'
> setting 'ivy.deliver.ivy.pattern' to
> '${ivy.distrib.dir}/[type]s/[artifact]-[revision](-[classifier]).[ext]'
> setting 'ivy.build.artifacts.dir' to '${ivy.project.dir}/build/artifacts'
> setting 'ivy.checksums' to 'sha1,md5'
> setting 'ivy.distrib.dir' to '${ivy.project.dir}/distrib'
> setting 'ivy.lib.dir' to '${ivy.project.dir}/lib'
> setting 'ivy.cache.dir' to '/root/.ivy2/cache'
> no default cache defined: set to /root/.ivy2/cachedownloadGrapes:
> no namespace defined: using systemdownloadGrapes:
> no latest strategy defined: using defaultjcenter:
> no namespace defined: using systemjcenter:
> no latest strategy defined: using defaultcachedGrapes:
> no namespace defined: using systemcachedGrapes:
> no latest strategy defined: using defaultlocalm2:
> no namespace defined: using systemlocalm2:
> no latest strategy defined: using defaultibiblio:
> no namespace defined: using systemibiblio:
> no latest strategy defined: using default'ivy.default.ivy.user.dir' already
> set: discarding '/root/.ivy2'settings loaded (175ms)
> default cache: /root/.ivy2/
> cache default resolver: downloadGrapes
> default latest strategy: latest-revision
> default conflict manager: latest-revision
> circular dependency strategy: warn
> validate: true
> check up2date: true
> – 5 resolvers: downloadGrapes [chain] [cachedGrapes, localm2, jcenter,
> ibiblio] return first: true dual: false -> cachedGrapes -> localm2 -> jcenter
> -> ibiblio jcenter [ibiblio] cache: null m2compatible: true ivy patterns:
> [https://jcenter.bintray.com/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]]
> artifact patterns:
> [https://jcenter.bintray.com/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]]
> repository: jcenter
> root: [https://jcenter.bintray.com/]
> pattern:
> [organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]
> usepoms: true
> useMavenMetadata: true
> cachedGrapes [file]
> cache: null
> m2compatible: false
> ivy patterns:
> /root/.groovy/grapes/[organisation]/[module]/ivy-[revision].xml
> artifact patterns:
> /root/.groovy/grapes/[organisation]/[module]/[type]s/[artifact]-[revision](-[classifier]).[ext]
> repository: cachedGrapes localm2 [ibiblio]
> cache: null
> m2compatible: true
> ivy patterns:
> [file:/root//.m2/repository/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext|file://root//.m2/repository/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]]
> artifact patterns:
> [file:/root//.m2/repository/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext|file://root//.m2/repository/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]]
> repository: localm2
> root: [file:/root//.m2/repository/|file://root//.m2/repository/]
> pattern:
> [organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]
> usepoms: true
> useMavenMetadata: true
> ibiblio [ibiblio]
> cache: null
> m2compatible: true
> ivy patterns:
> [https://repo1.maven.org/maven2/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]]
> artifact patterns:
> [https://repo1.maven.org/maven2/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]]
> repository: ibiblio
> root: [https://repo1.maven.org/maven2/]
> pattern:
> [organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]
> usepoms: true
> useMavenMetadata: true
> module settings: NONE'ivy.cache.dir' already set: discarding
> '/root/.groovy/grapes'
> setting 'ivy.default.configuration.m2compatible' to 'true'
> Resolving dependency: org.restlet#org.restlet;1.1.6 {default=[default]}::
> resolving dependencies :: caller#all-caller;working26 confs: [default]
> validate = false refresh = false
> resolving dependencies for configuration 'default'== resolving dependencies
> for caller#all-caller;working26 [default]loadData of
> caller#all-caller;working26 of rootConf=default== resolving dependencies
> caller#all-caller;working26->org.restlet#org.restlet;1.1.6
> [default->default]loadData of org.restlet#org.restlet;1.1.6 of
> rootConf=default using downloadGrapes to resolve
> org.restlet#org.restlet;1.1.6downloadGrapes:
> Checking cache for: dependency: org.restlet#org.restlet;1.1.6
> {default=[default]} no ivy file in cache for org.restlet#org.restlet;1.1.6:
> tried /root/.groovy/grapes/org.restlet/org.restlet/ivy-1.1.6.xml no ivy file
> in cache for org.restlet#org.restlet;1.1.6: tried
> /root/.groovy/grapes/org.restlet/org.restlet/ivy-1.1.6.xml trying
> /root/.groovy/grapes/org.restlet/org.restlet/ivy-1.1.6.xml tried
> /root/.groovy/grapes/org.restlet/org.restlet/ivy-1.1.6.xml
> cachedGrapes: resource not reachable for org.restlet#org.restlet;1.1.6:
> res=/root/.groovy/grapes/org.restlet/org.restlet/ivy-1.1.6.xml trying
> /root/.groovy/grapes/org.restlet/org.restlet/jars/org.restlet-1.1.6.jar tried
> /root/.groovy/grapes/org.restlet/org.restlet/jars/org.restlet-1.1.6.jar
> cachedGrapes: resource not reachable for org.restlet#org.restlet;1.1.6:
> res=/root/.groovy/grapes/org.restlet/org.restlet/jars/org.restlet-1.1.6.jar
> cachedGrapes: no ivy file nor artifact found for org.restlet#org.restlet;1.1.6
> don't use cache for org.restlet#org.restlet;1.1.6: checkModified=true trying
> [file:/root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.pom|file://root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.pom]
> tried
> [file:/root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.pom|file://root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.pom]
> localm2: resource not reachable for org/restlet#org.restlet;1.1.6:
> res=[file:/root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.pom|file://root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.pom]
> trying
> [file:/root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.jar|file://root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.jar]
> tried
> [file:/root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.jar|file://root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.jar]
> localm2: resource not reachable for org/restlet#org.restlet;1.1.6:
> res=[file:/root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.jar|file://root//.m2/repository/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.jar]
> localm2: no ivy file nor artifact found for org.restlet#org.restlet;1.1.6 no
> ivy file in cache for org.restlet#org.restlet;1.1.6: tried
> /root/.groovy/grapes/org.restlet/org.restlet/ivy-1.1.6.xml trying
> [https://jcenter.bintray.com/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.pom]
> tried
> [https://jcenter.bintray.com/org/restlet/org.restlet/1.1.6/org.restlet-1.1.6.pom]
> {noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)