Maven - 导入/分组项目的所有模块

时间:2015-10-24 12:52:52

标签: maven dependency-management

我有一个包含大约20个子模块的父项目:

<project>
    <modules>
        <module>module-1</module>
        <module>...</module>
        <module>module-20</module>
    </modules>
</project>

我想将此项目用作一个单独的实体,包括所有20个模块,在其他项目中。在Maven中这样做的便捷方法是什么?

我应该创建一个新的子模块来导入其他20个模块并参考这个项目吗?这应该是JAR还是POM项目?

<project>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>... module-1 ...</dependency>
        <dependency>...</dependency>
        <dependency>... module-20 ...</dependency>
    </dependencies>
</project>

1 个答案:

答案 0 :(得分:2)

我认为你在问题中提到的方式是个好主意。它实际上被称为Maven book中的最佳做法,引用:

  

如果您有一组逻辑上组合在一起的依赖项。您可以使用pom打包创建一个将依赖项组合在一起的项目。

您可以创建一个名为module-all的新模块,该模块可以是pom打包,只是依赖于每个模块。打包应该是pom,因为此模块的主要工件只是pom.xml(没有可编译的源,没有JAR ......)。然后,在您的外部项目中,您可以简单地向此新模块添加依赖项(如<type>pom</type>),并且每个module-i依赖项都将被包含在传递中。

如果您的所有模块都没有共享相同的版本,那么会有一个洞穴:需要引用特定模块的特定版本,您必须更新module-all版本每次模块version发生变化时。但是,如果它们共享相同的版本,则module-all发布周期将与module-i一致。