【问题标题】:Overriding an Ivy dependencies' revision覆盖 Ivy 依赖项的修订
【发布时间】:2011-04-11 10:37:26
【问题描述】:

我使用 Apache Ivy 来处理库依赖。在我的公司,我们有一个定期发布/版本化的“核心”项目。然后,我们有许多针对特定客户的“客户”项目。每个客户项目都使用我们在客户项目的 ivy.xml 中维护的特定版本的核心项目。一切都好。

有时有人会想在本地更改核心并使用特定项目测试更改。在这种情况下,他们将构建核心并将其发布到本地 Ivy 存储库,而不是共享存储库。

为了获得这个本地构建的版本,我是否需要确保本地构建的版本或核心发布与项目在 ivy.xml 中指向的完全相同的 x.y.z 版本?还是有其他方法?我不希望有人需要摆弄 ivy.xml(例如,将其更改为 core -> latest.integration),因为这是一种意外签入源代码控制的更改。也许有某种方法可以覆盖 ivy.xml 中依赖项的修订,也许在本地属性文件中?

【问题讨论】:

    标签: overriding dependencies ivy multi-project


    【解决方案1】:

    在开发中,我总是将我的内部项目依赖项指定为“latest.integration”或“latest.release”。这解决了不摆弄签入源代码管理的文件的问题。

    好消息是 ivy publish 任务将为您解析动态修订号。检查发布到您的存储库的 ivy.xml 文件,您会看到最新的修订号(发布时)已被自动替换。

    ivy deliver 任务旨在在您的构建中为您执行此操作。当我需要解析的 ivy 文件为我的模块生成 Maven POM 文件时,我会使用它。

    例如:

    <ivy:deliver pubrevision="??" status="release" deliverpattern="${build.dir}/ivy.xml"/>
    <ivy:makepom ivyfile="${build.dir}/ivy.xml" pomfile="${build.dir}/pom.xml"/>
    

    我的最后一个技巧是当您需要知道序列中的下一个版本号时使用常春藤buildnumber。 Ivy 将根据已发布到 ivy 存储库的内容来解决此问题(比依赖属性文件的标准 ANT 内部版本号任务更灵活)。

    所以继续使用动态修订,让 ivy 计算出特定版本中的实际版本号。

    【讨论】:

      猜你喜欢
      • 2012-08-15
      • 2013-09-08
      • 2014-03-18
      • 1970-01-01
      • 2020-04-12
      • 2021-03-02
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      相关资源
      最近更新 更多