0

我在理解如何在我的 Java 项目中有效地使用Ivy的动态修订时遇到问题。

目前,我有以下布局:

lib-a
revision: 1.0.0
status: release
dependencies: none

lib-b
revision: 2.0.0
status: release
dependencies: lib-a, rev 1.0.0

project-a
revision: 3.0.0
status: release
dependencies: lib-b, rev 2.0.0

project-b
revision: 4.0.0
status: release
dependencies: lib-b, rev 2.0.0

这意味着我始终保持状态release并使用明确的版本号。如果我lib-a在开发过程中进行更改,比如说lib-a,这是非常痛苦的。

我将更改保存在 中lib-a,将 ivy 文件中的修订更新1.0.1为进行细微更改。然后我需要更新 lib-b 的依赖项以宣布 lib-a 的修订版 1.0.1。现在我可以更新版本lib-b并且project-a因为project-a它是可执行文件并且包含我需要运行的集成测试。

lib-b第二种方法是使用更新的依赖项但版本相同重新发布。这通常适用于命令行上的 ant,但不适用于带有ivy-beans插件的 NetBeans。他们仍然使用 ivy 文件的缓存版本,lib-b.所以我需要清理到本地缓存以使其工作。

我对所有项目都使用我们 SVN 存储库中的通用build-ivy.xmlant 脚本。每个项目build.xml在项目的根目录中都有一个大部分时间只包含build-ivy.xml. 有时会添加或覆盖必要的任务。我刚刚在这里这里读到该解决方案可能正在使用动态修订。据我了解,我会将所有 ivy 文件中的修订设置为,并将所有 ivy 文件中integration-latest的状态设置为integration. 然后,常春藤总是会自动解析最新版本。但是我会将我的模块的修订设置为什么?完全省略?我将如何创建发布版本?我是否需要更改所有常春藤文件并将状态设置为releaserelease或者我会在发布模块之前执行交付任务,并尽可能覆盖状态吗?

4

1 回答 1

1

我建议阅读以下关于 Ivy 中多模块项目的教程。

ANT 构建传统上是大而单一的。您需要做的是效仿 Maven 将大型项目拆分为一系列较小构建的方式。每个子构建都将其工件发布到 ivy 的本地存储库中。

对于这种结构,Ivy 有很多有用的任务:

  • buildlist - 从您的整体主构建文件中调用。用于查看每个子模块的 ivy.xml 并确定正确的构建顺序(一些模块依赖于其他模块)
  • buildnumber - 查看已发布的内容并按顺序生成下一个版本号
  • 发布- 将工件推送到本地仓库(或外部仓库,如果在 ivysettings.xml 文件中配置)
于 2013-04-19T17:58:52.830 回答