Build automation 在Gradle中递归发布是否可能/容易?
我们有一个基于Ant和Ivy的构建管理系统,它基本上由一个共享Ant文件和一组围绕目录结构的约定组成 我试图克服的一个障碍是“递归发布”这一相当常见的情况。比如说,我们有5个内部代码模块,它们具有如下依赖关系图:Build automation 在Gradle中递归发布是否可能/容易?,build-automation,versioning,ivy,gradle,Build Automation,Versioning,Ivy,Gradle,我们有一个基于Ant和Ivy的构建管理系统,它基本上由一个共享Ant文件和一组围绕目录结构的约定组成 我试图克服的一个障碍是“递归发布”这一相当常见的情况。比如说,我们有5个内部代码模块,它们具有如下依赖关系图: 每个模块都应该将其常春藤构件发布到我们的内部repo 尚未清除用于测试部署的工件应具有“集成”状态 可部署到测试的工件应具有“里程碑”状态(由开发人员手动升级) 测试人员验证的工件应具有“发布”状态 假设开发人员在本地签出了所有5个模块,并对它们进行了更改。现在他想把所有的改变提
- 每个模块都应该将其常春藤构件发布到我们的内部repo
- 尚未清除用于测试部署的工件应具有“集成”状态
- 可部署到测试的工件应具有“里程碑”状态(由开发人员手动升级)
- 测试人员验证的工件应具有“发布”状态
- e-1.0-RC1发布
- 发布d-1.1-RC2,将e-1.0-RC1作为依赖项引用
- 发布c-2.0-RC1,将d-1.1-RC2作为依赖项引用
- 发布b-3.3-RC1,将e-1.0-RC1作为依赖项引用
- 最后,发布a-7.1-RC2,将c-2.0-RC1和b-3.3-RC1作为依赖项引用
用gradle?实现这一点的简单方法,在我看来,它就像一个普通的多项目构建。假设您使用的是基于JVM的语言,Gradle使用约定提供了很好的开箱即用支持(您可以自由重写这些约定以满足项目的需要)——试试看
请随意询问使用Gradle的多项目构建的更具体细节。我能想到的唯一方法是使用主构建文件,该文件将版本号向下传播到每个模块的各个构建文件。这有一个不幸的副作用,就是将您的五个模块绑定到一个单元中,该单元需要作为一个单独的实体进行管理,但这可能是实现您想要的目标的唯一方法。感谢您的回复。我正在寻找实际运行的gradle命令,以便在一个步骤中发布所有5个模块,或者至少是此功能的特定文档。@oksayt:我想您正在寻找。您需要运行它的任务名
install
@Benjamin我不明白为什么需要使用Maven插件,因为我没有使用Maven。install
任务对于maven的每个模块一个工件的限制,似乎有更多的解决办法。@oksayt:当你说“发布”时,这是什么意思?我想你的意思是将它上传到Maven存储库并为它创建pom.xml
,对吗?如果是这样的话,Maven插件就是最好的选择。没有应用这个插件,Gradle就不支持这种开箱即用的方式。@Benjamin我是说常春藤意义上的发布:。我正在寻找的解决方案将使用常春藤机制获得下一个可用的版本号并发布工件。如果问题不够具体,请告诉我。