代码之家  ›  专栏  ›  技术社区  ›  Mike Q

重写常青藤依赖项的修订

  •  2
  • Mike Q  · 技术社区  · 14 年前

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

    有时,有人会希望在本地更改核心,并使用特定的项目测试更改。在这种情况下,他们将构建核心并将其发布到本地常春藤回购协议,而不是共享的。

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   Mark O'Connor    14 年前

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

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

    常春藤 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在特定的版本中计算出实际的版本号。