Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Build automation 在Gradle中递归发布是否可能/容易?_Build Automation_Versioning_Ivy_Gradle - Fatal编程技术网

Build automation 在Gradle中递归发布是否可能/容易?

Build automation 在Gradle中递归发布是否可能/容易?,build-automation,versioning,ivy,gradle,Build Automation,Versioning,Ivy,Gradle,我们有一个基于Ant和Ivy的构建管理系统,它基本上由一个共享Ant文件和一组围绕目录结构的约定组成 我试图克服的一个障碍是“递归发布”这一相当常见的情况。比如说,我们有5个内部代码模块,它们具有如下依赖关系图: 每个模块都应该将其常春藤构件发布到我们的内部repo 尚未清除用于测试部署的工件应具有“集成”状态 可部署到测试的工件应具有“里程碑”状态(由开发人员手动升级) 测试人员验证的工件应具有“发布”状态 假设开发人员在本地签出了所有5个模块,并对它们进行了更改。现在他想把所有的改变提

我们有一个基于Ant和Ivy的构建管理系统,它基本上由一个共享Ant文件和一组围绕目录结构的约定组成

我试图克服的一个障碍是“递归发布”这一相当常见的情况。比如说,我们有5个内部代码模块,它们具有如下依赖关系图:

  • 每个模块都应该将其常春藤构件发布到我们的内部repo
  • 尚未清除用于测试部署的工件应具有“集成”状态
  • 可部署到测试的工件应具有“里程碑”状态(由开发人员手动升级)
  • 测试人员验证的工件应具有“发布”状态
假设开发人员在本地签出了所有5个模块,并对它们进行了更改。现在他想把所有的改变提升到“里程碑”的地位。换句话说,常春藤回购协议中应该发生的是:

  • 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作为依赖项引用
我还没有找到一种使用ivy+ant实现这一点的简单方法(ivy承诺了类似于递归交付的东西,但我找不到任何有效的例子)

Gradle在这里听起来很有希望,因为它似乎对多项目构建有很好的支持。我浏览了一下文档,但没有立即找到这个案例作为例子。有
用gradle?

实现这一点的简单方法,在我看来,它就像一个普通的多项目构建。假设您使用的是基于JVM的语言,Gradle使用约定提供了很好的开箱即用支持(您可以自由重写这些约定以满足项目的需要)——试试看


请随意询问使用Gradle的多项目构建的更具体细节。

我能想到的唯一方法是使用主构建文件,该文件将版本号向下传播到每个模块的各个构建文件。这有一个不幸的副作用,就是将您的五个模块绑定到一个单元中,该单元需要作为一个单独的实体进行管理,但这可能是实现您想要的目标的唯一方法。

感谢您的回复。我正在寻找实际运行的gradle命令,以便在一个步骤中发布所有5个模块,或者至少是此功能的特定文档。@oksayt:我想您正在寻找。您需要运行它的任务名
install
@Benjamin我不明白为什么需要使用Maven插件,因为我没有使用Maven。
install
任务对于maven的每个模块一个工件的限制,似乎有更多的解决办法。@oksayt:当你说“发布”时,这是什么意思?我想你的意思是将它上传到Maven存储库并为它创建
pom.xml
,对吗?如果是这样的话,Maven插件就是最好的选择。没有应用这个插件,Gradle就不支持这种开箱即用的方式。@Benjamin我是说常春藤意义上的发布:。我正在寻找的解决方案将使用常春藤机制获得下一个可用的版本号并发布工件。如果问题不够具体,请告诉我。