You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by kapilanand <an...@yahoo.com> on 2007/08/27 17:37:08 UTC

Re: Multi module project and maven-assembly-plugin (more details)

I am facing the same problem.
I am using Maven 2.0.7 and assembly plugin 2.2-beta-1
Here are some more details of the same problem (multi-module project):

1) "mvn package" with assembly:attached bound to package phase fails
When assembly:attached is bound to package phase, it fails outrightly. It
does not try to create packages and it fails to find the artifact file for
the moduleSet included in the assembly descriptor.

2) If assembly is not bound to the package phase, it still fails except in
one scenario:
- When I remove this execution binding, "mvn assembly:assembly" fails with
the same error but only after going through the packaging of all modules. 
(Looks like package is a pre-requisite for assembly anyway)

- Running package and assembly:assembly is two steps also fails with the
identical error.
mvn package
mvn assembly:assembly

- This runs successfully only if I use "mvn package assembly:assembly", that
is when both package and assembly:assembly goals run in the same JVM.



Vanja Petreski wrote:
> 
> lib-release.xml:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <assembly>
>   <id>lib-release</id>
>   <formats>
>     <format>zip</format>
>   </formats>
>   <includeBaseDirectory>true</includeBaseDirectory>
>   <baseDirectory>${artifactId}</baseDirectory>
> 
>   <moduleSets>
>         <moduleSet>
>             <includes>
>                 <include>com.antegra.aims:aims-bot-api</include>
>                 <include>com.antegra.aims:aims-bot-core</include>
>             </includes>
>             <binaries>
>                 <outputDirectory>lib</outputDirectory>
>                 <unpack>false</unpack>
>                 <includeDependencies>false</includeDependencies>
>             </binaries>
>         </moduleSet>
>     </moduleSets>
> 
> </assembly>
> 
> On 8/20/07, Vanja Petreski <vp...@gmail.com> wrote:
>>
>> Hello,
>>
>> I have problem with attached goal.
>>
>> Parent POM:
>>
>> <project xmlns="http://maven.apache.org/POM/4.0.0"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
>> "
>>   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>> http://maven.apache.org/maven-v4_0_0.xsd
>> ">
>>
>>   <modelVersion>4.0.0</modelVersion>
>>
>>   <groupId>com.antegra.aims</groupId>
>>   <artifactId>aims-bot</artifactId>
>>   <packaging>pom</packaging>
>>   <version>0.1.0-alpha-SNAPSHOT</version>
>>   <name>aims-bot</name>
>>   <url>http://www.antegra.com</url>
>>   <description>AIMS Bot Library</description>
>>
>>   <properties>
>>     <aimsBotVersion>0.1.0-alpha-SNAPSHOT</aimsBotVersion>
>>   </properties>
>>
>>   <build>
>>     <plugins>
>>
>>       <plugin>
>>         <artifactId>maven-compiler-plugin</artifactId>
>>         <configuration>
>>           <source>1.5</source>
>>           <target>1.5</target>
>>         </configuration>
>>       </plugin>
>>
>>       <plugin>
>>         <artifactId>maven-resources-plugin</artifactId>
>>         <configuration>
>>           <encoding>UTF-8</encoding>
>>         </configuration>
>>       </plugin>
>>
>>       <plugin>
>>         <artifactId>maven-assembly-plugin</artifactId>
>>         <configuration>
>>             <descriptorSourceDirectory>
>>                 src/main/assembly
>>             </descriptorSourceDirectory>
>>         </configuration>
>>
>>         <executions>
>>           <execution>
>>             <id>lib-release</id>
>>             <phase>package</phase>
>>             <goals>
>>               <goal>attached</goal>
>>             </goals>
>>           </execution>
>>         </executions>
>>
>>       </plugin>
>>     </plugins>
>>   </build>
>>
>>   <modules>
>>       <module>aims-bot-api</module>
>>       <module>aims-bot-core</module>
>>   </modules>
>>
>>   <dependencyManagement>
>>     <dependencies>
>>       <dependency>
>>         <groupId>com.antegra.aims</groupId>
>>         <artifactId>aims-bot-api</artifactId>
>>         <version>${aimsBotVersion}</version>
>>       </dependency>
>>       <dependency>
>>         <groupId>com.antegra.aims</groupId>
>>         <artifactId>aims-bot-core</artifactId>
>>         <version>${aimsBotVersion}</version>
>>       </dependency>
>>       <dependency>
>>         <groupId>jivesoftware</groupId>
>>         <artifactId>smack</artifactId>
>>         <version>3.0.4</version>
>>       </dependency>
>>     </dependencies>
>>   </dependencyManagement>
>>
>>   <dependencies>
>>     <dependency>
>>       <groupId>junit</groupId>
>>       <artifactId>junit</artifactId>
>>       <version>3.8.1</version>
>>       <scope>test</scope>
>>     </dependency>
>>   </dependencies>
>> </project>
>>
>> -----------------------------------------------
>>
>> When I fire mvn package, the following error occurs:
>>
>> [INFO] Scanning for projects...
>> [INFO] Reactor build order:
>> [INFO]   aims-bot
>> [INFO]   aims-bot-api
>> [INFO]   aims-bot-core
>> [INFO]
>> ----------------------------------------------------------------------------
>> [INFO] Building aims-bot
>> [INFO]    task-segment: [package]
>> [INFO]
>> ----------------------------------------------------------------------------
>> [INFO] [site:attach-descriptor]
>> [INFO] [assembly:attached {execution: lib-release}]
>> [INFO]
>> ------------------------------------------------------------------------
>> [ERROR] BUILD ERROR
>> [INFO]
>> ------------------------------------------------------------------------
>> [INFO] Failed to create assembly: Artifact:
>> com.antegra.aims:aims-bot-api:jar:0.1.0-alpha-SNAPSHOT (included by
>> module) does not have an artifact with a file. Please ensure the package
>> phase is run before the assembly is generated.
>>
>> --------------------------------
>>
>> If I dont bind attached goal to the package phase and fire mvn clean
>> package assembly:assembly, everything is ok.
>>
>> What is the problem?
>>
>> Thanx,
>> Vanja
>>
> 
> 

-- 
View this message in context: http://www.nabble.com/Multi-module-project-and-maven-assembly-plugin-tf4297489s177.html#a12351662
Sent from the Maven - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Multi module project and maven-assembly-plugin (more details)

Posted by John Casey <jd...@commonjava.org>.
This is a design flaw with the 2.0.x (and for now, the 2.1.x/trunk)  
Maven code. In a multimodule build, when child modules specify the  
parent pom in their <parent/> section, it forces Maven to sort the  
parent pom's build ahead of those children. Since you're binding the  
assembly plugin to the parent pom and (I'm assuming) your child poms  
declare this parent as a <parent />, the parent's build runs  
first...including the execution of the assembly plugin. At this stage  
of the build, the child modules' binary artifacts don't exist yet,  
and any reference to them will cause the assembly plugin execution to  
fail.

The best workaround I've found to date is to create another module  
whose only responsibility is to create that assembly. Then, specify  
your other modules as dependencies in this new assembly module, and  
use a dependencySet. Unfortunately, it seems that child modules'  
binaries are not available for typically structured builds, at least  
for now.

HTH,

-john

On Aug 27, 2007, at 11:37 AM, kapilanand wrote:

>
> I am facing the same problem.
> I am using Maven 2.0.7 and assembly plugin 2.2-beta-1
> Here are some more details of the same problem (multi-module project):
>
> 1) "mvn package" with assembly:attached bound to package phase fails
> When assembly:attached is bound to package phase, it fails  
> outrightly. It
> does not try to create packages and it fails to find the artifact  
> file for
> the moduleSet included in the assembly descriptor.
>
> 2) If assembly is not bound to the package phase, it still fails  
> except in
> one scenario:
> - When I remove this execution binding, "mvn assembly:assembly"  
> fails with
> the same error but only after going through the packaging of all  
> modules.
> (Looks like package is a pre-requisite for assembly anyway)
>
> - Running package and assembly:assembly is two steps also fails  
> with the
> identical error.
> mvn package
> mvn assembly:assembly
>
> - This runs successfully only if I use "mvn package  
> assembly:assembly", that
> is when both package and assembly:assembly goals run in the same JVM.
>
>
>
> Vanja Petreski wrote:
>>
>> lib-release.xml:
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <assembly>
>>   <id>lib-release</id>
>>   <formats>
>>     <format>zip</format>
>>   </formats>
>>   <includeBaseDirectory>true</includeBaseDirectory>
>>   <baseDirectory>${artifactId}</baseDirectory>
>>
>>   <moduleSets>
>>         <moduleSet>
>>             <includes>
>>                 <include>com.antegra.aims:aims-bot-api</include>
>>                 <include>com.antegra.aims:aims-bot-core</include>
>>             </includes>
>>             <binaries>
>>                 <outputDirectory>lib</outputDirectory>
>>                 <unpack>false</unpack>
>>                 <includeDependencies>false</includeDependencies>
>>             </binaries>
>>         </moduleSet>
>>     </moduleSets>
>>
>> </assembly>
>>
>> On 8/20/07, Vanja Petreski <vp...@gmail.com> wrote:
>>>
>>> Hello,
>>>
>>> I have problem with attached goal.
>>>
>>> Parent POM:
>>>
>>> <project xmlns="http://maven.apache.org/POM/4.0.0"
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
>>> "
>>>   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>> http://maven.apache.org/maven-v4_0_0.xsd
>>> ">
>>>
>>>   <modelVersion>4.0.0</modelVersion>
>>>
>>>   <groupId>com.antegra.aims</groupId>
>>>   <artifactId>aims-bot</artifactId>
>>>   <packaging>pom</packaging>
>>>   <version>0.1.0-alpha-SNAPSHOT</version>
>>>   <name>aims-bot</name>
>>>   <url>http://www.antegra.com</url>
>>>   <description>AIMS Bot Library</description>
>>>
>>>   <properties>
>>>     <aimsBotVersion>0.1.0-alpha-SNAPSHOT</aimsBotVersion>
>>>   </properties>
>>>
>>>   <build>
>>>     <plugins>
>>>
>>>       <plugin>
>>>         <artifactId>maven-compiler-plugin</artifactId>
>>>         <configuration>
>>>           <source>1.5</source>
>>>           <target>1.5</target>
>>>         </configuration>
>>>       </plugin>
>>>
>>>       <plugin>
>>>         <artifactId>maven-resources-plugin</artifactId>
>>>         <configuration>
>>>           <encoding>UTF-8</encoding>
>>>         </configuration>
>>>       </plugin>
>>>
>>>       <plugin>
>>>         <artifactId>maven-assembly-plugin</artifactId>
>>>         <configuration>
>>>             <descriptorSourceDirectory>
>>>                 src/main/assembly
>>>             </descriptorSourceDirectory>
>>>         </configuration>
>>>
>>>         <executions>
>>>           <execution>
>>>             <id>lib-release</id>
>>>             <phase>package</phase>
>>>             <goals>
>>>               <goal>attached</goal>
>>>             </goals>
>>>           </execution>
>>>         </executions>
>>>
>>>       </plugin>
>>>     </plugins>
>>>   </build>
>>>
>>>   <modules>
>>>       <module>aims-bot-api</module>
>>>       <module>aims-bot-core</module>
>>>   </modules>
>>>
>>>   <dependencyManagement>
>>>     <dependencies>
>>>       <dependency>
>>>         <groupId>com.antegra.aims</groupId>
>>>         <artifactId>aims-bot-api</artifactId>
>>>         <version>${aimsBotVersion}</version>
>>>       </dependency>
>>>       <dependency>
>>>         <groupId>com.antegra.aims</groupId>
>>>         <artifactId>aims-bot-core</artifactId>
>>>         <version>${aimsBotVersion}</version>
>>>       </dependency>
>>>       <dependency>
>>>         <groupId>jivesoftware</groupId>
>>>         <artifactId>smack</artifactId>
>>>         <version>3.0.4</version>
>>>       </dependency>
>>>     </dependencies>
>>>   </dependencyManagement>
>>>
>>>   <dependencies>
>>>     <dependency>
>>>       <groupId>junit</groupId>
>>>       <artifactId>junit</artifactId>
>>>       <version>3.8.1</version>
>>>       <scope>test</scope>
>>>     </dependency>
>>>   </dependencies>
>>> </project>
>>>
>>> -----------------------------------------------
>>>
>>> When I fire mvn package, the following error occurs:
>>>
>>> [INFO] Scanning for projects...
>>> [INFO] Reactor build order:
>>> [INFO]   aims-bot
>>> [INFO]   aims-bot-api
>>> [INFO]   aims-bot-core
>>> [INFO]
>>> -------------------------------------------------------------------- 
>>> --------
>>> [INFO] Building aims-bot
>>> [INFO]    task-segment: [package]
>>> [INFO]
>>> -------------------------------------------------------------------- 
>>> --------
>>> [INFO] [site:attach-descriptor]
>>> [INFO] [assembly:attached {execution: lib-release}]
>>> [INFO]
>>> -------------------------------------------------------------------- 
>>> ----
>>> [ERROR] BUILD ERROR
>>> [INFO]
>>> -------------------------------------------------------------------- 
>>> ----
>>> [INFO] Failed to create assembly: Artifact:
>>> com.antegra.aims:aims-bot-api:jar:0.1.0-alpha-SNAPSHOT (included by
>>> module) does not have an artifact with a file. Please ensure the  
>>> package
>>> phase is run before the assembly is generated.
>>>
>>> --------------------------------
>>>
>>> If I dont bind attached goal to the package phase and fire mvn clean
>>> package assembly:assembly, everything is ok.
>>>
>>> What is the problem?
>>>
>>> Thanx,
>>> Vanja
>>>
>>
>>
>
> -- 
> View this message in context: http://www.nabble.com/Multi-module- 
> project-and-maven-assembly-plugin-tf4297489s177.html#a12351662
> Sent from the Maven - Users mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>

---
John Casey
Committer and PMC Member, Apache Maven
mail: jdcasey at commonjava dot org
blog: http://www.ejlife.net/blogs/john