Hi,
I'm trying to port the Cargo build to m2 and I'm now tackling the
distribution part. Right now, I have the following directory structure for
m1:
cargo/
|_ core/
|_ container/
|_ generic/
|_ util/
|_ module/
|_ distribution/
|_ extensions/
|_ ant/
|_ [...]
The core/* modules produce private jar artifacts (they're not made public)
and we want to aggregate them into a single jar that will be published
(public artifact).
Right now, we achieve this by defining a distribution project which creates
the aggregated jar.
We'd like to have the same with m2. I have started using the assembly plugin
in the cargo/core/ project's POM but I have not been successful so far.
Here's what I have added to cargo/core/pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<descriptor>src/assemble/jar.xml</descriptor>
<finalName>cargo-core-0.6-SNAPSHOT</finalName>
</configuration>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
The jar.xml is:
<assembly>
<id>jar</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>target</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>cargo-core-*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
Note: I'm sure the format is wrong here. The goal is to aggregate the jars
produced by the 4 submodules (container/, module/, util/ and generic/).
The problem is that it apparently does not work the way I imagined:
- Running "m2 install" in cargo/core generates an empty jar. That's because
the jar.xml format is probably wrong but also because the cargo/core project
is executed before the submodules so there's an issue in the execution order
which leads me to believe I'm not using it in the right way.
- As the modules inherit from cargo/core/pom.xml, they are also looking for
a src/assemble/jar.xml file. This is not the behavior I'd like as it's only
the core project that should perform the aggregation.
- Last, I'd like that the aggregated jar is considered a proper artifact so
that it can also be installed/deployed as any other artifact. The idea is
also to have the cargo/extensions/ant project depend on it in its
dependencies list.
Any idea how I could achieve this use case? What am I doing wrong?
Thanks a lot
-Vincent
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]