Ronald J Jenkins Jr created ARCHETYPE-454:
---------------------------------------------

             Summary: -DarchetypeCatalog credential mishandling
                 Key: ARCHETYPE-454
                 URL: https://jira.codehaus.org/browse/ARCHETYPE-454
             Project: Maven Archetype
          Issue Type: Bug
          Components: Generator
    Affects Versions: 2.2
         Environment: Apache Maven 3.0.5 
(r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 08:51:28-0500)
Maven home: C:\apache-maven-3.0.5
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_25\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
            Reporter: Ronald J Jenkins Jr


To avoid having to fill my settings.xml with lots of redundant {{<server>}} 
entries when using archetypes, I'm using {{-DarchetypeCatalog}} in my 
{{MAVEN_OPTS}} variable to reference my Artifactory instance. Since my 
Artifactory instance requires authentication, I have to use the format:

bq.{{-DarchetypeCatalog=https://user:pass@server/artifactory/repo/archetype-catalog.xml}}

I'm using Artifactory's centrally secure passwords feature 
(http://www.jfrog.com/confluence/display/RTF/Centrally+Secure+Passwords). 
Sometimes, the encrypted passwords that Artifactory generates contain slashes. 
_\{DESede\}/t+C9jzyjIkoHwOd43r3Vw==_ is used in this example.

When I attempt to run {{mvn archetype:generate}} with this setup, I get the 
following error:

{code}
[WARNING] Error reading archetype catalog 
https://user:{DESede}/t+C9jzyjIkoHwOd43r3Vw==@servername:8443/artifactory/repo/archetype-catalog.xml
java.lang.NumberFormatException: For input string: "{DESede}"
        at 
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.lang.Integer.parseInt(Integer.java:492)
        at java.lang.Integer.parseInt(Integer.java:527)
        at org.apache.maven.wagon.PathUtils.port(PathUtils.java:281)
        at 
org.apache.maven.wagon.repository.Repository.setUrl(Repository.java:147)
        at 
org.apache.maven.wagon.repository.Repository.<init>(Repository.java:91)
        at 
org.apache.maven.archetype.source.RemoteCatalogArchetypeDataSource.downloadCatalog(RemoteCatalogArchetypeDataSource.java:109)
        at 
org.apache.maven.archetype.source.RemoteCatalogArchetypeDataSource.getArchetypeCatalog(RemoteCatalogArchetypeDataSource.java:87)
        at 
org.apache.maven.archetype.DefaultArchetypeManager.getRemoteCatalog(DefaultArchetypeManager.java:216)
        at 
org.apache.maven.archetype.ui.generation.DefaultArchetypeSelector.getArchetypesByCatalog(DefaultArchetypeSelector.java:218)
        at 
org.apache.maven.archetype.ui.generation.DefaultArchetypeSelector.selectArchetype(DefaultArchetypeSelector.java:71)
        at 
org.apache.maven.archetype.mojos.CreateProjectFromArchetypeMojo.execute(CreateProjectFromArchetypeMojo.java:197)
        at 
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
        at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
        at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
        at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
        at 
org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
        at 
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at 
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
        at 
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
        at 
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
        at 
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
{code}

It appears that Maven is consuming slashes too greedily when the URL format 
_scheme://user:pass@server:port/path_ is used to specify the location of the 
archetype catalog. As a result, the given password is accidentally interpreted 
as the server port.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to