I'm having a spot of bother with the Maven assembly goal. I have a project which has a number of dependencies each of which may have their own transitive dependencies. If I run mvn dependency:tree than I can see all the dependencies including transitive are satisfied.
This is not the case when I run the assembly goal.What I would like is when I add an dependency to be included, then all of its transitive dependencies are also included. In the following example I have three dependencies I would like to be included. So when the assembly is made I expected to have those dependencies and any transitive dependencies for those dependencies as well.
<assembly>
<baseDirectory>${artifactId}/${artifactId}-${version}</baseDirectory>
<formats>
<format>zip</format>
</formats>
<fileSets>
</fileSets>
<dependencySets>
<dependencySet>
<unpack>false</unpack>
<scope>runtime</scope>
<outputDirectory>/lib
</outputDirectory>
<includes>
<include>com.acme.core:library-1</include>
<include>com.acme.core:library-2</include>
<include>com.acme.core:library-2</include>
</includes>
</dependencySet>
</dependencySets>
But if you open the the zip file you'll only find those three dependencies present which means at runtime the application is not fit for purpose due to missing libraries. I find this totally unintuitive as it goes against the behaviour one would expect from the POM.
Has anyone encountered this problem and is there 开发者_如何学JAVAa solution?
The "includes" and "excludes" apply to the transitive dependencies as well. Try adding the following configuration to your dependencySet
:
<useTransitiveFiltering>true</useTransitiveFiltering>
http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html#dependencySet
精彩评论