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:
ROOT - pom.xml
- container-test - pom.xml (this should be a sub-module in the resulting
project)
- container (a directory)
The archetype:generate goal fails in the getOutputFile method, with the
following exception:
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
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:
[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)
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