对于任何中等复杂的软件项目,您可以快速获得复杂的依赖链。
考虑以下依赖关系树:
A --> B --> C
`--------^
A和B都依赖于C.随着每个项目的发展,固定的依赖关系会阻止持续集成。 (例如,如果使用A所需的修复更新C,则B的依赖性也需要进行更新...)使用semantic版本控制,我们可以使模块与版本范围保持一致,而无需经常调整poms。
[实际上这个图表更复杂。我们不应该将所有内容组合到一个多模块项目中(或以其他方式组合它们),因为这会破坏模块化。我们希望使用持续集成构建模块化软件。]
但是,部署的版本应该是不可变的。他们所依赖的版本应该是固定的,因此今天发布的版本(+依赖项)与明年使用的版本相同。
目标:
问题:
鉴于:
有没有更好的方法与maven持续集成?
答案 0 :(得分:0)
如果任何依赖项是SNAPSHOT,则不会释放发布插件。这就是maven如何确保发布是不可变的。创建一个小型的多模块测试项目并在其上运行发布插件。然后你会更好地理解它的行为 - 这就是我必须做的事情。
我参与了一个包含405个POM的多模块项目,由Jenkins构建并部署到Artifactory。