包含的Maven程序集依赖关系集不会接收传递依赖关系

我有一个麻烦的Maven大会的目标.我有一个具有多个依赖关系的项目,每个依赖关系都有自己的传递依赖关系.如果我运行mvn依赖:树比我可以看到包括传递的所有依赖都满足.

当我运行程序集目标时不是这种情况.当我添加要包含的依赖项时,我想要的是,还包括其所有的传递依赖项.在下面的例子中,我有三个依赖关系我想包括.所以当大会作出之时,我预计会有这些依赖关系和这些依赖关系的任何传递性依赖关系.

<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>

但是如果您打开zip文件,您将只会发现这三个依赖关系,这意味着在运行时,由于缺少库,应用程序不适合目的.我发现这完全不直观,因为它违背了POM期望的行为.

有没有人遇到这个问题,是否有解决方案?

最佳答案
“包括”和“排除”也适用于传递依赖关系.尝试将以下配置添加到您的dependencySet中:

<useTransitiveFiltering>true</useTransitiveFiltering>

http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html#dependencySet

转载注明原文:包含的Maven程序集依赖关系集不会接收传递依赖关系 - 代码日志