In Maven's assembly guide (https://maven.apache.org/guides/mini/guide-assemblies.html), it is stated:
You'll notice that the assembly descriptor is located in ${project.basedir}/src/assembly which is the standard location for assembly descriptors.
But in the maven assembly plugin page (https://maven.apache.org/plugins/maven-assembly-plugin/examples/sharing-descriptors.html) it says:
Note: Your assembly descriptors must be in the directory /src/main/resources/assemblies to be available to the Assembly Plugin.
Are them 2 different things? Is any of them outdated?
It is the difference between using assemblies and making them available to other projects.
The idea of putting assembly descriptors in src/main/resources/assemblies
is to make them available to other modules or projects. You create a project, say my-assembly-descriptor
, with one or more assembly descriptors in src/main/resources/assemblies
. Then in a different project that you want to use the descriptor in you configure the assembly plugin to use my-assembly-descriptor
as a dependency.
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<dependencies>
<dependency>
<groupId>your.group.id</groupId>
<artifactId>my-assembly-descriptor</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<executions>
...
</executions>
</plugin>
The assembly plugin finds your descriptors on its classpath and can use them.
The assembly descriptors placed in src/assembly can be used to assemble artifacts but the can't be reused in other modules or projects.
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