对于具有大量Maven工件(内部生成和外部生成)的项目,如何自动发布内部控制工件作为整个产品发布的一部分。
关于这个问题需要注意的事项,我们使用Jenkins和Maven发布插件。因此,释放单个工件的操作是自动的(尽管启动该过程的操作是手动的)。然而,在释放过程中释放所有改变的伪像的过程不是自动化的(即,必须手动启动每个伪像的释放)。问题的一部分是,在发布结束之前几乎没有任何内容被释放,之前一切都保留在SHAPSHOT中。我们拥有大量的组件以及众多的应用程序/服务(超过30个),它们依赖于过多的组件。因此,不仅仅是选择组件和发布的情况,必须遵循发布依赖性层次结构(即从底部开始发布不使用其他组件的组件,然后继续工作直到所有应用程序/服务都是释放)。
值得注意的是,我们使用两个常见的父pom,它们在很大程度上控制外部工件依赖项的版本和内部组件依赖项。组件和应用程序的某些pom文件可能会覆盖它,但这是(或应该是)异常,应该是一个好的,但是暂时的原因。因此,当释放内部工件时,也应更新相应父依赖关系pom中的版本。
该产品有一个版本号(当然),但是各种pom文件在技术上并不共享此版本号。虽然这不是严格意义上的,但是当软件的某些部分设置为寿命结束时,它们将来不会更新,因此有限数量的工件版本目前与产品版本相匹配,最终不会是这样。
任何有关如何自动完成此过程的想法都将非常感激。此外,如果你觉得我所描述的似乎是一种管理软件的疯狂方式,那么请提供评论。谢谢。
答案 0 :(得分:2)
您可以使用Maven Versions plugin来帮助正式化项目版本。
例如,use-next-releases目标可能允许您释放最低级别的项目,然后更快地将这些已发布的版本带入其依赖项中。
如果您希望在必要时发布组件并简单地将项目带到正式发布的“最新”版本,则可能还有使用下一版本目标的余地。