[shrinkwrap-issues] [JBoss JIRA] (SHRINKRES-227) ShrinkWrap Maven Resolver doesn't support env vars in settings.xml

Matous Jobanek (JIRA) issues at jboss.org
Fri Sep 11 04:35:00 EDT 2015


    [ https://issues.jboss.org/browse/SHRINKRES-227?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13107760#comment-13107760 ] 

Matous Jobanek commented on SHRINKRES-227:
------------------------------------------

To be honest, none of the patterns is truly correct. I'll try to create the right one.
Nevertheless, when the ENCRYPTED_STRING_PATTERN is applied, the variable should be already replaced so the pattern $\{env.NEXUS_PASSWORD\} shouldn't be there already.
I've created a test, that should cover this issue:
https://github.com/shrinkwrap/resolver/commit/25c126b27af3c3d64a1eb7f5889811babbd570fa

I've used the variable PATH as the env variable for replacing, because I expect it to be available on all platforms by default.
https://github.com/shrinkwrap/resolver/blob/master/impl-maven/src/test/resources/profiles/settings-auth-env.xml#L10-L11
This is validated there in the test - whether the variable has been replaced or not:
https://github.com/shrinkwrap/resolver/blob/master/impl-maven/src/test/java/org/jboss/shrinkwrap/resolver/impl/maven/RepositoryAuthEnvTestCase.java#L56-L57

There in this test case, you can see that the env variables are supported in the settings.xml. Is there any difference between my test and your case? If so, try to explain or create a reproducer please. 
If I understand it correctly, you don't use the encrypted passwords, do you?

> ShrinkWrap Maven Resolver doesn't support env vars in settings.xml
> ------------------------------------------------------------------
>
>                 Key: SHRINKRES-227
>                 URL: https://issues.jboss.org/browse/SHRINKRES-227
>             Project: ShrinkWrap Resolvers
>          Issue Type: Feature Request
>          Components: maven
>            Reporter: James Rawlings
>
> I get the stacktrace below when using this code on a jenkins instance that uses env vars in the settings.xml
> {code}
> return ShrinkWrap.create(WebArchive.class)
>                 .addClasses(StringToURL.class, URLToConnection.class, NestingFactoryBean.class, ServiceStringBean.class, ServiceUrlBean.class, ClientProducer.class)
>                 .addClasses(DeltaspikeTestBase.getDeltaSpikeHolders())
>                 .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"))
>                 .addAsLibraries(Maven.resolver().loadPomFromFile("pom.xml")
>                         .resolve(
>                                 "org.apache.deltaspike.core:deltaspike-core-impl",
>                                 "com.google.mockwebserver:mockwebserver"
>                         )
>                         .withTransitivity().as(File.class));
> {code}
> Stacktrace..
> {code}
> -------------------------------------------------------
>  T E S T S
> -------------------------------------------------------
> Running io.fabric8.cdi.weld.ExtensionTest
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.51 sec <<< FAILURE! - in io.fabric8.cdi.weld.ExtensionTest
> io.fabric8.cdi.weld.ExtensionTest  Time elapsed: 0.51 sec  <<< ERROR!
> java.lang.RuntimeException: Could not invoke deployment method: public static org.jboss.shrinkwrap.api.spec.WebArchive io.fabric8.cdi.weld.ExtensionTest.createDeployment()
> 	at org.jboss.shrinkwrap.resolver.impl.maven.internal.decrypt.MavenSecurityDispatcher.getMaster(MavenSecurityDispatcher.java:171)
> 	at org.jboss.shrinkwrap.resolver.impl.maven.internal.decrypt.MavenSecurityDispatcher.decrypt(MavenSecurityDispatcher.java:96)
> 	at org.jboss.shrinkwrap.resolver.impl.maven.internal.decrypt.MavenSettingsDecrypter.decrypt(MavenSettingsDecrypter.java:92)
> 	at org.jboss.shrinkwrap.resolver.impl.maven.internal.decrypt.MavenSettingsDecrypter.decrypt(MavenSettingsDecrypter.java:60)
> 	at org.jboss.shrinkwrap.resolver.impl.maven.bootstrap.MavenSettingsBuilder.decryptPasswords(MavenSettingsBuilder.java:223)
> 	at org.jboss.shrinkwrap.resolver.impl.maven.bootstrap.MavenSettingsBuilder.buildSettings(MavenSettingsBuilder.java:186)
> 	at org.jboss.shrinkwrap.resolver.impl.maven.bootstrap.MavenSettingsBuilder.buildDefaultSettings(MavenSettingsBuilder.java:113)
> 	at org.jboss.shrinkwrap.resolver.impl.maven.MavenWorkingSessionImpl.<init>(MavenWorkingSessionImpl.java:136)
> 	at org.jboss.shrinkwrap.resolver.impl.maven.MavenResolverSystemImpl.<init>(MavenResolverSystemImpl.java:44)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
> 	at org.jboss.shrinkwrap.resolver.spi.loader.SpiServiceLoader.createInstance(SpiServiceLoader.java:244)
> 	at org.jboss.shrinkwrap.resolver.spi.loader.SpiServiceLoader.createInstances(SpiServiceLoader.java:208)
> 	at org.jboss.shrinkwrap.resolver.spi.loader.SpiServiceLoader.all(SpiServiceLoader.java:79)
> 	at org.jboss.shrinkwrap.resolver.spi.loader.SpiServiceLoader.onlyOne(SpiServiceLoader.java:85)
> 	at org.jboss.shrinkwrap.resolver.spi.loader.ServiceRegistry.onlyOne(ServiceRegistry.java:117)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:497)
> 	at org.jboss.shrinkwrap.resolver.api.Invokable.invokeMethod(Invokable.java:100)
> 	at org.jboss.shrinkwrap.resolver.api.ResolverSystemFactory.createFromUserView(ResolverSystemFactory.java:91)
> 	at org.jboss.shrinkwrap.resolver.api.ResolverSystemFactory.createFromUserView(ResolverSystemFactory.java:53)
> 	at org.jboss.shrinkwrap.resolver.api.Resolvers.use(Resolvers.java:68)
> 	at org.jboss.shrinkwrap.resolver.api.maven.Maven.resolver(Maven.java:36)
> 	at io.fabric8.cdi.weld.ExtensionTest.createDeployment(ExtensionTest.java:49)
> {code}
> This error is similar to issue https://issues.jboss.org/browse/SHRINKRES-145 however I cannot escape the values in my settings.xml as they need to resolve to env vars.
> Example snippet of my settings.xml..
> {code:xml}
> <servers>
>   <server>
>     <id>local-nexus</id>
>     <username>${env.NEXUS_USERNAME}</username>
>     <password>${env.NEXUS_PASSWORD}</password>
>   </server>
>   <server>
>     <id>nexus</id>
>     <username>${env.NEXUS_USERNAME}</username>
>     <password>${env.NEXUS_PASSWORD}</password>
>   </server>
>   <server>
>     <id>docker-registry</id>
>     <username>${env.DOCKER_REGISTRY_USERNAME}</username>
>     <password>${env.DOCKER_REGISTRY_PASSWORD}</password>
>   </server>
> </servers>
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the shrinkwrap-issues mailing list