我希望这是开始正确的地方和正确的讨论。
我想要的
我正在寻找一种好的/正确的方式来处理多个具有相同配置的maven项目,这是我的情况
我做什么
我的第一个方法是创建一个多模块项目。但是由于模块实际上是独立的,因此在发布时(因此发布周期不是相同的),这似乎是增加的负担。我也未能确保我可以独立使用IntelliJ中的子模块,并且每个子模块都有自己的Jenkins工作。对我而言,它总是全部或全部都不是
第二种方法是/将要有单独的项目。这样可以简化IntelliJ中的编码,并且Jenkins可以为每个项目分配工作。
但是现在影响到孩子的对父pom的更改非常繁琐,因为其他所有项目都必须采用此更改才能更改为新的父。
这是可行的,也许是解决这个问题的方法,但是恐怕我在这里滥用了父概念,我想知道,是否有更好的方法在多个Maven项目中使用通用设置?
感谢阅读,我希望这是可以理解的
答案 0 :(得分:3)
您可以使用here中所述的<scope>import</scope>
重用来自不同pom的依赖项管理部分,但这仅适用于依赖项,而不能用于属性,存储库等。
恐怕没有比pom更好的方法来解决您的问题了。实际上,这是被广泛采用的方法。例如,Spring boot已经使用了很长时间。
您想做的一件事就是为该父pom提供良好的发布管理。确保您不依赖SNAPSHOT
版本来停止现有项目。
答案 1 :(得分:2)
只需使用通用设置创建一个父POM,然后将其余的设置为单独。
将该POM作为具有pom
包装的独立实体(在此级别没有子模块)单独发布到(本地)存储库。
您项目中唯一的更改就是将新的POM用作父POM。
<project ... >
<parent>
<groupId>my-group</groupId>
<artifactId>my-parent</artifactId>
<version>1</version>
</parent>
...
但是请注意,在父POM中对依赖项进行硬编码通常不是一个好主意(通过dependencyManagement定义版本是可以的,但是请每个项目明确指定它实际需要的依赖项)。