【发布时间】:2015-04-01 12:54:27
【问题描述】:
我们有一个非常模块化的 Maven pom 设置,常见的 jar 和特定的 jar 都被捆绑到一个 war 和 ear 中。由于在 70 多个模块中有如此多的重用,我们不使用多模块,每个模块可以而且确实有自己的生命周期,并且可以独立于任何其他模块发布。
所有模块都从各种父 pom 继承,最终每个 pom 都从 master POM 继承,其中定义了所有外部版本,例如 spring 和常见的本地模块版本。
在我们发布之前,这一切正常。如果主 POM 需要更改(它偶尔会这样做),ALL pom 需要以一种或另一种方式更新。我知道 maven 版本插件可以使用最新的 SNAPSHOT 版本等更新特定的 POM,但这仅适用于单个 POM 级别。
我们希望能够在发布完成后迭代地更改所有 pom。
我们不使用多模块 POM,也无法更改我们的构建过程以使用此机制。
我已经阅读了 SO,最接近问题的地方就在这里。 https://stackoverflow.com/a/3615417/1279002
编写 shell 脚本似乎是一种解决方案,但我们有一个 Windows 和 Linux 混合的开发和构建系统。我相信其他人会解决这个问题。谁能告诉他们如何解决这个问题?
【问题讨论】:
-
您能否更详细地解释一下:“如果主 POM 需要更改,它偶尔会这样做,所有的 pom 都需要以一种或另一种方式进行更新。”为什么?怎么样?
-
如果您在模块之间有重用和依赖关系,我建议您从它构建一个单一的多模块。使依赖模块的版本的所有处理更简单。在此基础上,您可以使用 maven-release-plugin 之类的默认值来一次性发布整个项目。
-
@Lutz Horm:如果所有子 POM 都继承自主 POM 并且主 POM 版本增加,那么所有子 POM 都必须更改为指向主 POM 的新版本.
-
@khmarbaise:我们在主 POM 中使用依赖管理部分(和插件管理)来管理通用版本。多模块不是一个选项。我们目前使用 maven 3.2.4。
-
另一个可能类似的问题stackoverflow.com/questions/8466033/…
标签: java maven maven-3 pom.xml parent-pom