我有一个包含大约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>
答案 0 :(得分:2)
我认为你在问题中提到的方式是个好主意。它实际上被称为Maven book中的最佳做法,引用:
如果您有一组逻辑上组合在一起的依赖项。您可以使用
pom
打包创建一个将依赖项组合在一起的项目。
您可以创建一个名为module-all
的新模块,该模块可以是pom
打包,只是依赖于每个模块。打包应该是pom
,因为此模块的主要工件只是pom.xml
(没有可编译的源,没有JAR ......)。然后,在您的外部项目中,您可以简单地向此新模块添加依赖项(如<type>pom</type>
),并且每个module-i
依赖项都将被包含在传递中。
如果您的所有模块都没有共享相同的版本,那么会有一个洞穴:需要引用特定模块的特定版本,您必须更新module-all
版本每次模块version
发生变化时。但是,如果它们共享相同的版本,则module-all
发布周期将与module-i
一致。