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

标签 build-automation versioning ivy gradle

我们有一个基于 Ant 和 Ivy 的构建管理系统,它基本上由一个共享的 ant 文件和一组围绕目录结构的约定组成。
我试图克服的一个障碍是相当常见的“递归发布”情况。比如说,我们有 5 个内部代码模块,它们的依赖关系图如下:
Module dependencies

  • 每个模块都应该将其 ivy 工件发布到我们的内部仓库
  • 尚未清除部署以进行测试的工件应具有“集成”状态
  • 可部署到测试的工件应具有“里程碑”状态(由开发人员手动提升)
  • 经测试人员验证的工件应具有“发布”状态

  • 假设开发人员已在本地 checkout 所有 5 个模块,并对它们进行了全部更改。现在他想将他所有的变化都提升到“里程碑”的地位。换句话说, Ivy 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 作为依赖项。

  • 我还没有找到使用 ivy + ant 的简单方法(Ivy promise 类似的东西称为递归交付,但我找不到任何可行的示例)。
    Gradle 在这里听起来很有希望,因为它似乎对多项目构建有很好的支持。我确实浏览了文档,但没有立即找到这个案例作为示例。有没有
    使用gradle实现这一目标的简单方法?

    最佳答案

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

    关于build-automation - 在 Gradle 中递归发布是否可能/容易?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6544605/

    相关文章:

    Jenkins 必须在 Windows 上触发构建吗?

    为嵌入式软件构建 (CI) 服务器

    msbuild - TFS 2010 : Perform different builds and command line task in sequence?

    api - 已删除的向后兼容功能的 REST 处理

    java - 在Java(REST api)中,您如何指定位于同一路径的2个资源,以便执行取决于客户端提供的版本?

    groovy - 设置 Grape 配置文件的位置

    coffeescript - Sublime Text CoffeeScript 构建系统 : `env: node: No such file or directory`

    c++ - 如何将 Qt GUI 应用程序的版本打印到控制台

    Angular 9 - NGCC 因未处理的异常而失败

    ant - 使用 Ivy 下载 LWJGL native