我们的应用程序中有多个模块,每个模块都有各自的版本并依赖于其他模块(我们组织外部)。他们都有一个父 POM,它有自己的版本,独立于子版本。
当其中一个模块发生更改时,它们将转换为快照。
对于以下示例:
Parent v14.0
- module1 v1.5.0
- dependency1(module2 v15.0.0)
- dependency2(external-jar v12.0.1)
- module2 v15.0.0
- module3 v3.1.0
如果 module2 发生变化,则 module2 的版本将变为 v15.0-SNAPSHOT,然后 module1 变为 v1.5-SNAPSHOT。父级保持不变。
在 parent+modules 上没有相同版本的目的是我们希望本地化对某些模块所做的更新而不影响其他模块的版本。
很久以前就是这样设计的,并且有几个 bash 脚本来支持更新,尽管它们并没有处理所有情况。无论如何,我们没有一键发布流程,我们觉得我们离这种方法还很远。
我们不知道如何说服管理层采用所有模块的单一版本方法。您对以上内容有何感想?你有没有遇到过使用上述结构的项目,它进展得如何?
谢谢!
最佳答案
我以前不得不处理这种情况。拥有去中心化版本确实有好处,尤其是在您的产品由大量模块组成的情况下,这是因为以下事实:
我们最终做的是:
我认为使用分散版本的项目和公司的开发原则要成熟得多,我必须承认,一开始我非常不愿意这种方法。您可能不会立即意识到或理解这些好处,但是通过一些练习和适当的设置,您将开始看到好处。我并不是说没有像...这样的警告,例如提升父级的版本,或者必须知道在哪些模块中提升某个模块的版本。
根据我的经验,一旦你习惯了使用它,这个模块实际上最终会更好地工作。
关于具有不同子版本的maven父pom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22529344/