I am using maven assembly plugin to generate a .tar
file contain several other files, dependent jars. All the files are being copied correctly to the given folders in the config assembly.xml
.
I would like to include the original project jar too in the final tar file, but not seeing it currently in it.
I do get the following message when I issue assembly:single
goal:
[WARNING] Cannot include project artifact: com.my.newpkg.project1:jar:0.0.3.0; it doesn't have an associated file or directory.
After reading over SO, it seems adding the following configs to pom.xml
should add the jar, but still not getting the expected result.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.my.newpkg.project1.MainClass</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<formats>
<format>dir</format>
<format>tar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<excludes>
<exclude>junit:junit</exclude>
</excludes>
<fileMode>0755</fileMode>
</dependencySet>
</dependencySets>
So, the configs are not yet correct? or Am I missing something here?
How can we add the current project jar into the final tar
In <dependencySet>
you can exclude the current project jar by saying <useProjectArtifact>false</useProjectArtifact>
, but it's true by default, so it should work.
From the warning, it seems that you need to do mvn package
first, but due to some internal maven issue, it does not work if you do mvn package
and mvn assembly:single
in separate commands.
It works if you do mvn package assembly:single
in one command.
Alternatively, add maven-assembly-plugin in your pom and bind it to the 'package' phase so it will trigger automatically on mvn package
:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>tar-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>etc/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With