將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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373928.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373928.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373928.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用python下載辭典

用python下載詞源詞典Etymoline Online Etymology Dictionary是最好的 English 詞源詞典&#xff0c;現在來說沒有之一。但是&#xff0c;一直在PC上查單詞有時不是很方便&#xff0c;遂就想怎么才能在手機上使用。現在的手機上的詞典&#xff0c;除了BlueDict、MDict之外&…

程序員都用什么來記錄知識_1年前的小五都用 Python 來做什么?

↑ 點擊上方 “凹凸數據” 關注 星標 ~ 每天更新&#xff0c;干貨不斷 (多圖預警)注&#xff1a;這是小五一年前在知乎的回答&#xff0c;當時還只有凹凸數讀一個公眾號&#xff0c;所以很多圖片都會帶有數讀或者知乎的水印。作為一個菜鳥數據分析師&#xff0c;只會sqlpytho…

CSDN編程挑戰——《高斯公式》

高斯公式 題目詳情: 高斯在上小學時發明了等差數列求和公式:12..1005050。現在問題在于給你一個正整數n&#xff0c;問你他可以表示為多少種連續正整數之和&#xff1f;&#xff08;自身也算&#xff09;。 輸入格式&#xff1a; 多組數據&#xff0c;每組數據一行&#xff0c…

SQL-行轉列(PIVOT)實例1

--未旋轉之前的查詢結果 select s.Name ShiftName,h.BusinessEntityID,d.Name as DpartmentName from HumanResources.EmployeeDepartmentHistory h inner join HumanResources.Department d on h.DepartmentIDd.DepartmentIDinner join HumanResources.Shift s on s.ShiftIDh…

將MongoDB與Morphia結合使用

在過去的幾年中&#xff0c; NoSQL數據庫&#xff08;例如CouchDB&#xff0c;Cassandra和MongoDB&#xff09;在不需要運行傳統RDBMS的語義和開銷的應用程序中得到了普及。 我不會進入選擇NoSQL數據庫的設計決策&#xff0c;因為其他人已經做得很好&#xff0c;但是我將結合我…

webservice接口_webservice服務器端發票識別接口

關鍵詞&#xff1a;發票識別 私有云發票識別 發票識別API接口 webservice發票識別平臺發票&#xff0c;一個再也熟悉不過的財務往來憑證&#xff0c;錄入發票&#xff0c;一項讓多少財會人員頭疼的工作。過去錄入一張發票需要一個財會人員5分鐘的時間&#xff0c;那么這個人在工…

二叉樹學習——簡單入門題

入門題一&#xff1a; 輸入一顆二叉樹&#xff0c;你的任務是按從上到下、從左到右的順序輸出各個節點的值。每個節點都按照從根節點到它的移動序列給出 &#xff08;L表示左&#xff0c;R表示右&#xff09;。在輸入中&#xff0c;每個節點的左括號和右括號之間沒有空格&#…

java8-4 多態的練習以及題目

1、/* 多態練習&#xff1a;貓狗案例*/ 1 class Animal {2 public void eat(){3 System.out.println("吃飯");4 }5 }6 7 class Dog extends Animal {8 public void eat() {9 System.out.println("狗吃肉"); 10 } 11 12 public void lookDoor() { 13 Syste…

一個簡單的socket通信小demo

寫了一個socket的程序&#xff0c;可以和本地的服務器進行通信&#xff0c;要先和服務器建立鏈接&#xff0c;然后發送登錄信息&#xff0c;驗證成功&#xff0c;就可以和服務器通信了 1 頁面截圖 2 點擊鏈接服務器&#xff0c;可以鏈接服務器&#xff0c;服務器的ip地址為&…

Java并發教程– CountDownLatch

Java中的某些并發實用程序自然會比其他并發實用程序受到更多關注&#xff0c;因為它們可以解決通用問題而不是更具體的問題。 我們大多數人經常遇到執行程序服務和并發集合之類的事情。 其他實用程序不太常見&#xff0c;因此有時它們可??能會使我們逃脫&#xff0c;但是請記…

漢儀尚巍手書可以商用嗎_【商用車維修】夏天修空調可以撐起全年修車收入的一半,你會了嗎?...

更多精彩&#xff0c;請點擊上方藍字關注我們&#xff01;車載空調是炎熱的季節必不可少的利器&#xff0c;但用得多&#xff0c;毛病也多了起來&#xff0c;今天和大家分享一些空調系統的相關知識&#xff0c;助力修車師傅們來應對空調系統的相關故障問題。如何判斷制冷系統的…

CSDN編程挑戰——《-3+1》

-31 題目詳情: 有一個數列&#xff0c;所有的數都是非負整數&#xff0c;你可以進行如下方式進行一次操作&#xff08;注意一次完整的操作必須先后完成如下兩個步驟&#xff09;&#xff1a; &#xff08;1&#xff09; 任選一個不小于3的數&#xff0c;把它減少3。 &#xff…

游戲感悟

1.所謂游戲平衡&#xff0c;就是指玩家沒有最優解。 2.所謂公司的文化&#xff0c;就是指員工被公司洗腦的那些觀點(認知)。 3.人是能動的&#xff0c;擺脫平庸。轉載于:https://www.cnblogs.com/yangzhou33/p/5074509.html

Git 簡單使用

1.Git是什么 簡介&#xff1a;Git是 Linux 之父 Linus Trovalds&#xff0c;為管理 Linux 內核代碼而建立的&#xff0c;被認為是分布式版本控制工具中的頂級水準。智能、友好、強健、高效。 作用&#xff1a;新建一個分支&#xff0c;把服務器上最新版的代碼fetch下來&#x…

Vaadin附加組件和Maven

介紹 我喜歡Vaadin的 &#xff08;眾多&#xff09;一件事是它對Vaadin框架的“附加組件”社區-他們稱之為Vaadin目錄 。 “附加組件”是框架中社區貢獻的附加組件&#xff0c;可以是任何東西&#xff0c;例如從新的客戶端小部件到數據表的延遲加載容器。 我肯定會為Activiti看…

八皇后時間復雜度_【算法打卡】N皇后

難度&#xff1a;困難題目&#xff1a;n 皇后問題研究的是如何將 n 個皇后放置在 nn 的棋盤上&#xff0c;并且使皇后彼此之間不能相互攻擊。上圖為 8 皇后問題的一種解法。給定一個整數 n&#xff0c;返回 n 皇后不同的解決方案的數量。提示&#xff1a;皇后&#xff0c;是國際…

Android-Binder 簡析

前言 對于Android來說&#xff0c;Binder的重要性怎么說都不為過。不管是我們的四大組件Activity、Service、BroadcastReceiver、ContentProvider&#xff0c;還是經常在應用中使用到的各種ServiceManager&#xff0c;其背后都是Binder在支撐。然而Binder機制又不是三言兩語能夠…

CSDN編程挑戰——《進制轉換》

進制轉換 題目詳情: 我們通常用的十進制數包含0-9十個數字。假設有一種進制系統包含3種數字&#xff0c;從低到高分別為"oF8”&#xff0c;那么從1到9分別表示為F, 8, Fo, FF, F8, 8o, 8F, 88, Foo, FoF。給定一種進制的數和兩種進制的數字表&#xff0c;請把它從第一種進…

tplink 703刷固件

1.軟件下載: ImageBuilder鏈接 如果是全新刷機的話,使用:http://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin 如果是系統升級的話,使用:http://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/op…

編程反模式

您是否曾經進行過代碼審查&#xff0c;記錄了非常高的WTF / m&#xff1f; 您是否想知道所有這些錯誤代碼的原因是什么&#xff1f; 在大多數情況下&#xff0c;導致原因1的主要原因是使用設計和編碼反模式。 如果您喜歡定義&#xff0c;請參見以下內容&#xff1a;AntiPatter…