Maven/Jenkins - 项目和依赖项的自动发布

4
我正在使用Maven项目,包含多个不同层次的依赖关系,每次主项目发布时,我们都要手动创建许多辅助项目的版本。我将尝试解释一下具体情况。
我的场景如下所示:
项目A
1. 依赖B - 依赖E - 依赖F - 依赖G
2. 依赖C - 依赖G - 依赖H
3. 依赖D
每个依赖都是独立的Maven项目,并且在项目中存在许多依赖层次结构。如果您修改了依赖G的代码并希望生成项目A的版本,则需要执行以下操作:
1. 生成项目G的版本 2. 更新项目F上的依赖G版本 3. 生成项目F的版本 4. 更新项目B上的依赖F版本 5. 生成项目B的版本 6. 更新项目A上的依赖B版本 7. 生成项目A的版本
我的意图是自动化这个过程。我找不到任何类似的问题,在谷歌搜索了几天后。您能否想出一些自动化级联生成版本的解决方案?我考虑基于Maven和Jenkins任务的解决方案,但它看起来非常复杂。

我可以问一下A、B、F和G之间的关系吗?它们中有些是库,有些是服务吗?A、B、F和G是否可以独立发布?这些项目中是否有编译时依赖项?这些项目中是否只有运行时依赖项? - simbo1905
还有,“发布”是什么意思?你们也会“部署”,这两个概念有什么不同吗?例如,这些“发布”只是制作一个类似于Nexus的工件,还是实际部署到服务器上? - simbo1905
这些必须总是以这种方式发布吗?或者有时它们是独立发布的(作为微服务和库),但有时它们必须作为任意集合发布。例如,在许多通常独立部署的内容中更新跨切面安全性或日志记录,但今天必须一起发布。 - simbo1905
请注意,现在有一个处于beta阶段的devops.stackexchange.com网站,可能会吸引更多经验丰富的人关注此特定场景下的问题。 - simbo1905
2个回答

0
也许你可以使用Build Flow插件Maven Release插件的组合来发布你的Maven项目。
Build Flow插件将帮助你设计构建序列(并尊重你的项目依赖关系)。
这只是一个想法,我没有测试过这个解决方案。

0
在Jenkins中,您可以使用不同的存储库来下载并构建,这种情况下,您将执行发布。希望您正在使用maven-release-plugin。因此,您可以使用Jenkins的此功能下载您提到的所有项目,并从包含每个项目作为模块的repo中创建或下载pom.xml文件(只是为了实现您的目标)。
Jenkins工作区中的结构应如下所示:
- pom.xml - moduleA - pom.xml - moduleB - pom.xml - moduleC - pom.xml
我的建议是,如果需要,将它们分组到一个存储库中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接