日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

将Maven与Ivy集成

發布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将Maven与Ivy集成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題是:您在Ivy存儲庫中(只有那里)有一些資源,您想在基于Maven的項目中使用這些資源。 可能的解決方案:
  • 由于Ivy可以輕松使用Maven風格的存儲庫(因此,您的Ivy客戶端可以繼續使用Ivy并進行一些微小的配置更改,因此將存儲庫遷移到Maven(例如Nexus),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

總結

以上是生活随笔為你收集整理的将Maven与Ivy集成的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。