从 Ant 构建文件中选择 Rev

Choose Rev from Ant Build File

我希望通过使用 live 和 dev 限定符将 jar 发布到 ivy 来分离开发和生产环境。

我正在寻找一种方法来从具有这些依赖项的项目中触发 ivy,以根据 ant 构建文件自动从这些环境中获取最新版本。

我是 ant 和 ivy 的新手,我找不到关于这是否可能的文档。

基本上,ant 中的 build-live 会触发使用 ref="[1.live.0,)"resolve-live,但是我们还需要一个默认的,供 Eclipse 环境中的开发人员通过以下方式自动获取依赖项插件。

您没有指明您使用的存储库类型。我假设您 使用 Maven 存储库管理器来管理您的发布存储库。其中一些支持远程工作流来管理我喜欢称之为“候选发布”的东西(例如,看看 Sonatype Nexus 提供的 staging 功能)

对于 pure ivy 解决方案,我首先建议阅读 best practice documentation,特别是标题为“处理集成版本”的部分。

发布新的 ivy 模块版本时,可以在 ivy 存储库中设置已发布的 ivy 文件的 status field. Out of the box ivy supports "integration", "milestone" or "release" but even these can be extended. The status is a label or metadata attribute that appears in the info 字段。

这是如何工作的?发布模块时如下:

<ivy:publish resolver="???" pubrevision="1.0.1" status="integration">
   <artifacts pattern="build/artifacts/jars/[artifact].[ext]" />
   <artifacts pattern="build/artifacts/zips/[artifact].[ext]" />
</ivy:publish>

这表明版本 1.0.1 是一个集成版本。

这将启用您正在寻找的功能。 Ivy 的 dynamic revisions 功能可用于自动下载具有特定状态的最新版本,如下所示:

<dependency org="acme" name="foo" rev="latest.integration" />

更新

模块一旦发布到存储库中就无法更改。这样做可能会破坏依赖该版本的构建。想一想,如果您更改构建的状态,如何传达该更改?相反,您使用“状态”来指示版本的稳定性。开源项目经常会在最终批准的主要版本之前发布几个“普遍可用”或“里程碑”版本。

做您想做的事需要server-side 存储库文件管理。我建议查看 Sonatype Nexus 中的“staging”套件。此功能将每个待定版本保存在临时存储库中,直到它最终获得批准并合并到主发布区域。