2

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

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

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

4

1 回答 1

1

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

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

ivy交付任务旨在在您的构建中为您执行此操作。当我需要解析的 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"/>

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

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

于 2010-09-13T22:51:27.907 回答