ivy maven_将Maven与Ivy集成
ivy maven
問題是:您在Ivy存儲庫中(只有那里)有一些資源,您想在基于Maven的項目中使用這些資源。 可能的解決方案:- 由于Ivy可以輕松使用Maven樣式的存儲庫(因此,您的Ivy客戶端可以繼續使用Ivy并進行一些微小的配置更改,因此將存儲庫遷移到Maven)(Maven客戶端也可以使用-推送請求流程也需要)待更改)
- 嘗試使用JFrog Artifactory,因為據報道它可以為Ivy和Maven提供相同的資源 (免責聲明:我尚未嘗試實際使用它,并且我不知道開源版本是否包含此功能)
- 或繼續閱讀...
我的解決方案目標(可能會很復雜)是:
- 它應該盡可能簡單和不言自明
- 它應該遵守DRY原則(不要重復自己)
- 除了Maven本身,它不應該具有其他依賴項
該解決方案如下所示(有關完整源代碼,請參閱code-repo ):
有兩個Maven配置文件:常春藤依賴項在已下載依賴項時激活,而常春藤解析則在尚未下載時激活。 這基于檢查最終要復制依賴項的目錄:
... <id>ivy-dependencies</id> <activation><activeByDefault>false</activeByDefault><file><exists>${basedir}/ivy-lib</exists></file> </activation> ... <id>ivy-resolve</id> <activation><activeByDefault>false</activeByDefault><file><missing>${basedir}/ivy-lib</missing></file> </activation> ...不幸的是,這里很少重復,因為Maven似乎沒有在配置文件激活部分擴展用戶定義的屬性,例如$ {ivy.target.lib.dir}。 概要文件還起到了另一個作用:在實際解決依賴關系之前避免考慮依賴關系。
首次運行構建時,它將創建目標目錄,并在其中寫入Ivy構建所需的文件(ivy.xml,ivysettings.xml和build.xml –在此示例中,我使用了Red5相應文件中的某些部分repo ),運行構建并嘗試自行清理。 它還會創建一個dependencies.txt文件,其中包含需要添加到依賴項列表中的文本塊。 最后,它失敗(失敗),指示用戶再次運行該命令。
在第二(第三,第四等)運行時,依賴項已經存在,因此解決過程將不會重復運行。 選擇這種方法而不是在每次構建時都運行解析,因為-盡管解析過程很快,但在一些更復雜的情況下可能會花費數十秒,并且我不想減慢構建速度。
而且,Ivy,Apache BSF框架等是從Maven中央存儲庫中獲取的,因此無需預先安裝它們即可成功完成構建。
關于選擇$ {ivy.target.lib.dir}的幾句話:如果在Maven樹中選擇它(如示例中選擇的那樣),您將收到來自Maven的警告,將來可能不支持。 另外,請確保將目錄添加到VCS的忽略機制(.gitignore,.hgignore,.cvsignore,svn:ignore等),以避免將庫意外提交給VCS。
如果需要向項目添加新的(Ivy)依賴項,則步驟如下:
- 刪除當前的$ {ivy.target.lib.dir}目錄
- 更新您的pom.xml中寫出ivy.xml文件的部分以包括新的依賴項
- 運行構建并觀察新的依賴關系已解決
- 更新常春藤依賴項配置文件的依賴項部分以包括新的依賴項(可能是從dependencies.txt復制)
這種方法的一個缺點是,基于Maven的系統的高級功能無法使用這些依賴項(例如,依賴項analisys /制圖插件,自動下載源代碼/ javadocs等)。 可能的解決方法(通常是個好主意)是對最小子集使用此方法-只是在Maven Central中找不到的jar。 所有其余部分(即使它們實際上實際上是從Ivy獲取的代碼的依賴關系)也應聲明為常規依賴關系,以從Maven存儲庫獲取。
最后,我想說的是,這一努力再次向我展示了Maven和Ivy / Ant可以多么靈活,并闡明了CDATA內部的許多極端情況(例如我們如何逃脫] –我們將其分成兩部分)。 而且它也可以進行進一步的調整(例如:將一個干凈的目標添加到ivy-resolve配置文件中,因此您可以使用mvn clean -P ivy-resolve刪除目錄,或者將所有下載的jar重新添加到一個jar中例如像這樣 ,這樣就避免了每次更改Ivy依賴項列表時都需要修改pom文件-這樣,再次簽名的JAR也無法重新添加,因此也不是通用解決方案。
參考: Transylvania Java用戶組的 JCG合作伙伴提供的Maven與Ivy的集成 。
相關文章 :
- 任何軟件開發公司應存在的服務,實踐和工具,第1部分
- 在領域驅動的設計,貧乏的領域模型,代碼生成,依賴項注入等方面……
- OSGi將Maven與Equinox結合使用
- Java模塊化方法–模塊,模塊,模塊
- 使用Spring AspectJ和Maven進行面向方面的編程
- GWT EJB3 Maven JBoss 5.1集成教程
翻譯自: https://www.javacodegeeks.com/2011/10/integrating-maven-with-ivy.html
ivy maven
總結
以上是生活随笔為你收集整理的ivy maven_将Maven与Ivy集成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 注释不好吗?
- 下一篇: 图片加文字如何制作?建议收藏下面这几个方