使用include设置的Maven程序集依赖项不会获取传递依赖项

时间:2011-05-16 13:30:21

标签: 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的期望。

是否有人遇到此问题并且有解决方案?

1 个答案:

答案 0 :(得分:14)

“包含”和“排除”也适用于传递依赖。尝试将以下配置添加到dependencySet

<useTransitiveFiltering>true</useTransitiveFiltering>

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