我在理解如何在我的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
中的更改,將常見問題文件中的修訂更新爲1.0.1
,稍作更改。然後,我需要更新lib-b的依賴關係來宣佈lib-a的修訂版本1.0.1。現在我可以更新lib-b
以及project-a
的版本,因爲project-a
是可執行文件,並且包含我需要運行的集成測試。
第二種方法是重新發布lib-b
與更新的依賴關係,但版本相同。這通常適用於命令行上的ant,但不適用於使用ivy-beans插件的NetBeans。他們仍然使用lib-b.
的ivy文件的緩存版本。所以我需要清理本地緩存才能使其工作。
我在我們的SVN倉庫中爲所有項目使用了一個通用的build-ivy.xml
ant腳本。每個項目的根目錄中都有build.xml
,大部分時間只包含build-ivy.xml
。有時需要添加或覆蓋任務。 我剛剛讀了here和here該解決方案可能使用動態修訂版。 據我瞭解,我會將所有常春藤文件的修訂版設置爲integration-latest
,並將所有常春藤文件中的狀態設置爲integration
。然後,常春藤總是會自動解析最新版本。 但是,我將我的模塊的修訂版設置爲?完全忽略它? 我將如何創建發佈版本?我是否需要更改所有常青藤文件並將其狀態設置爲release
,或者如果可能,我是否會在發佈模塊之前執行傳遞任務,並將狀態覆蓋爲release
?
我們最近爲我們的項目實現了這一點。必要時基本上採取以下步驟: – jaw
它通常起作用。在必要的情況下,基本上採取以下步驟:1.在''標籤內,徹底刪除'revision'屬性並將'status'屬性更改爲''integration''。 2.在依賴庫中,將''標籤內的'rev' attr更改爲'latest.integration'。 3.在ant構建文件中,對''任務,添加'resolveMode =「dynamic」'並添加一些版本魔法,如上面鏈接中所述。如果你改變'lib-a',pub-local,然後解決'project -a',它會找到更新後的'lib-a',這將在命令行中起作用。不幸的是,它不適合常春藤豆。 –
jaw
@ebeb您是否真的需要在解決任務中設置resolveMode屬性? –