[ http://jira.codehaus.org/browse/MASSEMBLY-467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benjamin Bentmann updated MASSEMBLY-467: ---------------------------------------- Fix Version/s: (was: 2.2-beta-6) Could be another occurrence of MNG-1323. > Sharing assembly descriptor across sub modules does not work if invoked from > parent project - bad resolve of the classpath > -------------------------------------------------------------------------------------------------------------------------- > > Key: MASSEMBLY-467 > URL: http://jira.codehaus.org/browse/MASSEMBLY-467 > Project: Maven 2.x Assembly Plugin > Issue Type: Bug > Affects Versions: 2.2-beta-5 > Environment: Winfows7, Maven 2.2.1, Sun JDK1.6.0_u18 > Reporter: Kek > Attachments: build-log.txt > > > My problem is similar to http://jira.codehaus.org/browse/MASSEMBLY-391, but > in my opinion it is BUG, not request for new feature. > I have project structure like: > module > submodule-1 > submodule-2 > my-assembly-descriptor-submodule > The submodule-1 and submodule-2 use the shared > my-assembly-descriptor-submodule to produce attached zip-artifact with > configuration files. > The creation of the zip-artifact is defined on parent module by use of > assembly plugin. > <plugin> > <artifactId>maven-assembly-plugin</artifactId> > <version>2.2-beta-5</version> > <dependencies> > <dependency> > <groupId>org.mymodule</groupId> > <artifactId>my-assembly-descriptor-submodule</artifactId> > <version>${project.version}</version> > </dependency> > </dependencies> > <executions> > <execution> > <id>zip-config</id> > <phase>package</phase> > <goals> > <goal>single</goal> > </goals> > <configuration> > <descriptors> > <descriptor>config-assembly.xml</descriptor> > </descriptors> > </configuration> > </execution> > </executions> > </plugin> > Everything works fine, when I install the shared assembly-descriptor to local > repository and run the "mvn clean package" separately in submodule-1 and > submodule-2. > But when I try to run the same command in parent module, than the build fails > - the config-assembly.xml is not found on classpath. > [INFO] Error reading assemblies: Error locating assembly descriptor: > config-assembly.xml > [1] [INFO] Searching for file location: > D:\mymodule\submodule-1\config-assembly.xml > [2] [INFO] File: D:\mymodule\submodule-1\config-assembly.xml does not exist. > [3] [INFO] Invalid artifact specification: 'config-assembly.xml'. Must > contain at least three fields, separated by ':'. > [4] [INFO] Failed to resolve classpath resource: > assemblies/config-assembly.xml from classloader: > org.codehaus.classworlds.realmclassloa...@11a75a2 > [5] [INFO] Failed to resolve classpath resource: config-assembly.xml from > classloader: org.codehaus.classworlds.realmclassloa...@11a75a2 > [6] [INFO] File: D:\mymodule\config-assembly.xml does not exist. > [7] [INFO] Building URL from location: config-assembly.xml > Error: > java.net.MalformedURLException: no protocol: config-assembly.xml > at java.net.URL.<init>(URL.java:567) > at java.net.URL.<init>(URL.java:464) > at java.net.URL.<init>(URL.java:413) > at > org.apache.maven.shared.io.location.URLLocatorStrategy.resolve(URLLocatorStrategy.java:54) > at org.apache.maven.shared.io.location.Locator.resolve(Locator.java:81) > at > org.apache.maven.plugin.assembly.io.DefaultAssemblyReader.addAssemblyFromDescriptor(DefaultAssemblyReader.java:309) > at > org.apache.maven.plugin.assembly.io.DefaultAssemblyReader.readAssemblies(DefaultAssemblyReader.java:140) > at > org.apache.maven.plugin.assembly.mojos.AbstractAssemblyMojo.execute(AbstractAssemblyMojo.java:352) > at > org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) > at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) > at > org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) > 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.classworlds.Launcher.launchEnhanced(Launcher.java:315) > at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) > at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) > at org.codehaus.classworlds.Launcher.main(Launcher.java:375) > The workaround exists: > 1) install/deploy the shared descriptor in isolated build > 2) remove <module>my-assembly-descriptor-submodule</module> from parent > module to avoid build of this submodule in the same build-cycle as submodules > that need it. > 3) than the my-assembly-descriptor-submodule will be always resolved from > repository and the problem doesn't occurre. > But you can not all-in-one build. -- 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