覆盖常春藤依赖项的修订版

时间:2010-09-12 21:57:19

标签: override dependencies ivy multi-project

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

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

为了获得本地构建的版本,我需要确保本地构建的版本或核心版本与项目在ivy.xml中指向的x.y.z版本完全相同吗?还是有其他方法吗?我宁愿没有人要求使用ivy.xml(例如将其更改为core - > latest.integration),因为这是因意外检入源代码控制的那种变化。也许有一些方法可以覆盖ivy.xml中的依赖项修订,可能在本地属性文件中?

1 个答案:

答案 0 :(得分:1)

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

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

常春藤deliver任务旨在为您在构建中执行此操作。当我需要一个已解析的常春藤文件为我的模块生成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内部版本号任务更加灵活)。

因此,继续使用动态修订版,让常春藤计算出特定版本中的实际版本号。