Maven Assembly插件 - 包含子模块的依赖关系?

时间:2010-08-08 22:37:54

标签: maven-2

我正在尝试为大型多模块项目设置程序集插件。现在的目标是将我的所有工件放入目录中。这是我的描述符:

    <assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>Install-Package</id>
<formats>
    <format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
    <dependencySet>
        <unpack>false</unpack>
        <scope>runtime</scope>
        <outputDirectory>dependencies</outputDirectory>
    </dependencySet>
</dependencySets>
<moduleSets>
    <moduleSet>
        <binaries>
            <unpack>false</unpack>
        </binaries>
    </moduleSet>
</moduleSets>

目前,这会将我的所有工件复制到程序集目录中。到现在为止还挺好。问题是dependencies文件夹只包含主pom文件中列出的依赖项。有没有办法在程序集中包含子模块的依赖关系而不将它们全部列在根pom中? (如果它们是单独构建的话,将它们全部包含在根pom中会为子模块添加额外的未使用的依赖项。)

谢谢!

2 个答案:

答案 0 :(得分:3)

  

问题是dependencies文件夹只包含主pom文件中列出的依赖项。

是的,这就是“顶级”dependencySets的作用。

  

有没有办法在程序集中包含子模块的依赖关系而不将它们全部列在根pom中?

删除“顶部”dependencySets并在binaries的{​​{1}}元素下声明一个:

moduleSet

答案 1 :(得分:0)

我想出来了。我需要在<dependencySet>中包含<moduleSet>元素,如此:

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>Install-Package</id>
    <formats>
        <format>dir</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <moduleSets>
        <moduleSet>
            <binaries>
                <unpack>false</unpack>
                <dependencySets>
                    <dependencySet>
                        <unpack>false</unpack>
                        <scope>compile</scope>
                        <outputDirectory>dependencies</outputDirectory>
                    </dependencySet>
                </dependencySets>
            </binaries>
        </moduleSet>
    </moduleSets>
</assembly>