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