發佈並解析本地Ivy Cache我認爲這裏最令人吃驚的是,這個功能默認情況下被烘焙成Maven和Gradle,但是在Ant/Ivy風景中沒有它的存在痕跡(你自己看!)。通過示例
我已經繼承了一套使用Ant/Ivy作爲構建/依賴系統的JVM組件。這些組件之間存在很多依賴關係,這意味着對其中一個組件進行更改通常會產生連鎖反應,需要您更新Ivy依賴項併發布新版本的上游依賴項。
維護這些項目的老團隊通過將快照瓶頸發佈到快照回購來處理本地開發。 我想用一個新的模式替換這個模式,快照從本地Ivy緩存發佈/解析。
我能找到this very similar question,但發現答案有點缺乏細節(特別是完全拼接在一起的代碼片段),部分原因是該問題缺少任何特定的代碼示例。所以我在這裏創造了SSCCE並推2個GitHub的回購協議:
- fizzbuzz-model,一個Java庫,定義了一個數據模型(一些無意義的POJO)
- fizzbuzz-app,一個簡單的可執行的JAR是取決於
fizzbuzz-model
作爲一個依賴
什麼我找這裏的確切(即實際代碼,不是僞代碼)的變化(可能build.xml
,ivy.xml
或ivy-settings.xml
,或所有三個),將允許我使用下面的本地開發/測試周期:
- 我做出改變
fizzbuz-model
和本地發佈換到常春藤緩存,優選作爲快照的版本(如1.0.0-SNAPSHOT
或類似) - 從
fizzbuzz-app
根目錄內,我運行ant resolve
,其在從緩存的快照這些變化拉動現在 - 我可以利用中的這些更改
雖然沒有硬性要求,我就非常喜歡不必須手動管理的版本號。也就是說,當我在本地發佈fizzbuzz-model
時,將使用相同版本(類似fizzbuz-model-1.0.0-SNAPSHOT.jar
)重寫而不是將構建編號增加到fizzbuzz-model-1.0.1-SNAPSHOT.jar
或類似編號)。這樣,我在本地測試時所要做的就是發佈fizzbuzz-model
並解決fizzbuzz-app
。
目前,當我發佈fizzbuzz-model
,我得到以下錯誤:
/Users/myuser/workspace/fizzbuzz-model/build.xml:52: impossible to publish artifacts for hotmeatballsoup#fizzbuzz-model;1.0: java.io.IOException: missing artifact hotmeatballsoup#fizzbuzz-model;1.0.0-SNAPSHOT!fizzbuzz-model.pom
at org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:225)
at org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:172)
要在本地複製,克隆這兩個項目,並按照他們的自述文件,從fizzbuzz-model
。任何人都可以發現我要去哪裏?隨意回答這裏和/或提交PR,無論你喜歡哪個!和謝謝!
爲什麼downvote?這個問題是關於主題,不是愚蠢的,顯示研究,是[SSCCE](http://sscce.org)的教科書定義。 – smeeb
我不是那個倒票的人,但你沒有承認我的答案,也沒有處理你要求的拉取請求。 –