[
http://jira.codehaus.org/browse/ARCHETYPE-329?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Herve Boutemy closed ARCHETYPE-329.
-----------------------------------
Resolution: Cannot Reproduce
> StringIndexOutOfBoundsException when generating archetype for multi-module
> project
> ----------------------------------------------------------------------------------
>
> Key: ARCHETYPE-329
> URL: http://jira.codehaus.org/browse/ARCHETYPE-329
> Project: Maven Archetype
> Issue Type: Bug
> Components: Archetypes
> Affects Versions: 2.0-alpha-5
> Reporter: Petter Måhlén
>
> Given an archetype setup with the following multi-module archetype resources
> structure:
> {noformat}
> ROOT - pom.xml
> - container-test - pom.xml (this should be a sub-module in the resulting
> project)
> - container (a directory)
> {noformat}
> The archetype:generate goal fails in the getOutputFile method, with the
> following exception:
> {noformat}
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute
> goal org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate
> (default-cli) on project standalone-pom: String index out of range: -9
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:87)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:79)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:86)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:58)
> 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:252)
> at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:100)
> at org.apache.maven.cli.MavenCli.execute(MavenCli.java:443)
> at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:166)
> at org.apache.maven.cli.MavenCli.main(MavenCli.java:130)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> 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)
> Caused by: org.apache.maven.plugin.MojoFailureException: String index out of
> range: -9
> at
> org.apache.maven.archetype.mojos.CreateProjectFromArchetypeMojo.execute(CreateProjectFromArchetypeMojo.java:205)
> at
> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:144)
> ... 19 more
> {noformat}
> The CreateProjectFromArchetypeMojo hides the stack trace of the underlying
> exception (this should be fixed, too, I think), but by adding debug
> information to the mojo in a couple of places, and enabling debug logging, I
> was able to get the following trace:
> {noformat}
> [DEBUG] Processing module container-test
> [DEBUG] Processing module rootArtifactId newArtifact
> [DEBUG] Processing module pom
> /Users/pettermahlen/tmp/newArtifact/container-test/pom.xml
> [DEBUG] Processing module moduleOffset container-test
> [DEBUG] Processing module outputDirectoryFile
> /Users/pettermahlen/tmp/newArtifact/container-test
> [DEBUG] Processing fileset project moduleId container-test
> [DEBUG] Processing fileset project pom
> /Users/pettermahlen/tmp/newArtifact/container-test/pom.xml
> [DEBUG] Processing fileset project moduleOffset container-test
> [DEBUG] Processing fileset project outputDirectoryFile
> /Users/pettermahlen/tmp/newArtifact/container-test
> [DEBUG] Processing fileset project basedirPom
> /Users/pettermahlen/tmp/newArtifact/pom.xml
> [DEBUG] Processing pom
> /Users/pettermahlen/tmp/newArtifact/container-test/pom.xml with parent
> /Users/pettermahlen/tmp/newArtifact/pom.xml
> [DEBUG] Prosessing template archetype-resources/container-test/pom.xml
> [DEBUG] Merging into
> /Users/pettermahlen/tmp/newArtifact/container-test/pom.xml
> [DEBUG] Adding module container-test
> [INFO] Parent element not overwritten in
> /Users/pettermahlen/tmp/newArtifact/container-test/pom.xml
> [DEBUG] Processing filesets
> getOutputFile(container-test, container,
> /Users/pettermahlen/tmp/newArtifact/container-test, false, group,
> container-test, org.apache.velocity.velocitycont...@390e4fd7)
> java.lang.StringIndexOutOfBoundsException: String index out of range: -9
> at java.lang.String.substring(String.java:1937)
> at java.lang.String.substring(String.java:1904)
> at
> org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.getOutputFile(DefaultFilesetArchetypeGenerator.java:315)
> at
> org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.processTemplates(DefaultFilesetArchetypeGenerator.java:691)
> at
> org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.processArchetypeTemplates(DefaultFilesetArchetypeGenerator.java:451)
> at
> org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.processFilesetProject(DefaultFilesetArchetypeGenerator.java:562)
> at
> org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.processFilesetModule(DefaultFilesetArchetypeGenerator.java:497)
> at
> org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.processFilesetModule(DefaultFilesetArchetypeGenerator.java:526)
> at
> org.apache.maven.archetype.generator.DefaultFilesetArchetypeGenerator.generateArchetype(DefaultFilesetArchetypeGenerator.java:211)
> at
> org.apache.maven.archetype.generator.DefaultArchetypeGenerator.processFileSetArchetype(DefaultArchetypeGenerator.java:136)
> at
> org.apache.maven.archetype.generator.DefaultArchetypeGenerator.generateArchetype(DefaultArchetypeGenerator.java:106)
> at
> org.apache.maven.archetype.generator.DefaultArchetypeGenerator.generateArchetype(DefaultArchetypeGenerator.java:149)
> at
> org.apache.maven.archetype.generator.DefaultArchetypeGenerator.generateArchetype(DefaultArchetypeGenerator.java:209)
> at
> org.apache.maven.archetype.DefaultArchetypeManager.generateProjectFromArchetype(DefaultArchetypeManager.java:71)
> {noformat}
> The cause of the problem seems to be that the directory name ('container') is
> a substring of the moduleOffset parameter, which eventually causes the
> following call to be illegal:
> + templateName.substring( moduleOffset.length() );
> I would have included a fix, but I don't understand what this code is doing,
> so I can't really do that. Hopefully this should be enough information to
> solve the problem, though. Also, it would be great to give some better error
> reporting by not catching Exception and swallowing it, I think.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira