Uploaded image for project: 'Maven Archetype'
  1. Maven Archetype
  2. ARCHETYPE-454

-DarchetypeCatalog credential mishandling

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Auto Closed
    • 2.2
    • None
    • Generator
    • None

    Description

      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:

      -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:

      [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)
      

      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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            ronaldjjenkins Ronald Jenkins Jr
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: