project building
project building such as ant, maven, Ivy
摘要: 在jenkins上建立了一個job,通過標準的maven命令來執行打包測試和上傳artifact到nexus倉庫。隨后發現有些性能問題:sonar的job執行時,需要重新update SCM,然后需要再次執行test,之后才能進行真正屬于sonar的任務如代碼檢測等。明顯update SCM 和執行test是重復了原有job,純屬浪費。這個重復執行問題隨著測試案例和測試執行時間的增加,會越來越明顯。因此需要考慮消除這里的重復問題,減少build的時間,并節約jenkins的資源。
閱讀全文
摘要: 近期自己折騰自己,放著正統的maven + junit不用,卻準備用ant + ivy 替代maven做依賴管理,用testng替代junit做單元測試。
閱讀全文
摘要: 在討論這個問題前,先簡單的介紹一下雙重解析器的工作原理:顧名思義,雙重解析是雙重的:它由一個ivyResolver和一個 artifactResolver組成,其中ivyResolver負責解析ivy的模塊描述符,而artifactResolver則用于解析制品。換言之,ivyResolver用來指明需要什么,而artifactResolver則負責獲取具體的制品文件。
第一次在學習ivy的過程中看到ivy中的雙重解析器,就感覺設計非常的不錯,可以比較好的解決這方面的問題。只要維護好ivyResolver中的依賴,則整個系統中的依賴都被限制在這個范圍中。比如如果有人想用spring2.5.6之外的版本,哼哼,ivyResolver解析器會不工作的......
但是,在實際的使用過程中發現,雙重解析器的工作模式有點問題:如果目標依賴在ivyResolver中可以找到則情況正常,但是如果目標依賴在 ivyResolver中沒有定義,ivy居然會在artifactResolver的繼續查找!然后報告說依賴解析成功已下載云云,而不是我
閱讀全文
摘要: 在maven中,對于一個依賴,除了groupId,artifactId,version這三個屬性來作為標志之外,還有一個特殊的屬性可用: classifier。
ivy中依賴對應的有屬性org,name,rev,分別對應到maven中的groupId,artifactId,version.
但是dependency沒有和maven的classifier屬性相對應的屬性,因此無法表示dependency的classifier。這樣就出現問題了,比如上面的testng 的例子,在ivy中如果將對testng的依賴定義寫成上面的樣子,則解析時是無法獲取到我們想到的依賴 testng-5.10.jar的。
那么,在ivy中如何指定classifier屬性呢?
閱讀全文
摘要: 如果你已經成功的跟隨并理解了所有的教程,可能你還是需要得到更好的關于如何在現實世界中只用ivy的描述。
這里有一些有關系的鏈接.
閱讀全文
摘要: 現在你已經看到從一個已經存在的倉庫創建你自己的倉庫是如何的簡單,你可能會想知道如何處理更加復雜的情況,例如當源倉庫和目的地倉庫不遵循相同的命名約定。
當你有一個已經存在的倉庫并且希望從大量的不遵循相同的命名轉換的公共倉庫中獲益時,這個問題非常常見。或者僅僅是因為你發現你作為基礎使用的倉庫不夠一直- 為什么所有的apache commons模塊不適用org.apache.commons 組織?歷史原因。但是如果你安裝你自己的倉庫,你可能不想從歷史中蒙受損失。
幸運的是,對于這種問題ivy有一種非常強大的答復:namespaces.
閱讀全文
摘要: 在這個步驟中我們使用install任務來從maven2 倉庫安裝模塊到一個基于文件系統的倉庫。我們首先安裝一個不帶依賴的模塊,然后安裝一個帶有依賴的模塊。
閱讀全文
摘要: install任務讓你從一個倉庫復制一個模塊或者模塊集合到另一個倉庫。這對于構建和維護一個企業或者團隊倉庫非常有用。如果你不想你的團隊中的開發人員都訪問公共的maven2倉庫(例如為了控制哪些模塊可以在你的公司或者你的團隊中使用),答復開發人員的請求來手工增加新的模塊或者新的版本在某些時候變得令人厭煩。
幸運的是install任務可以在這里提供幫助: 你可以為你的用于維護目標企業倉庫的倉庫維護構建使用特定的設置。這些設置將指向另一個倉庫(例如maven2 公共倉庫),因此你只需要使用簡單的命令行要求ivy安裝你需要的模塊。
為了演示這個我們將首先使用個一些基本的ivy設置文件來展示它是如何工作的,然后我們將使用高級命名空間特性來演示如何在源倉庫和目標倉庫之間處理命名不匹配。
閱讀全文
摘要: 這個教程介紹ivy文件中的模塊配置的使用。ivy模塊配置事實上是一個非常重要的概念。某些人甚至告訴我使用ivy而不用ivy配置就像吃乳酪而不動就在你旁邊的Chateau Margaux 1976!
嚴肅的說,ivy中的配置可以更好的理解為你的模塊的視圖,你將可以看到在這里他們將如何被高效地使用。
閱讀全文
摘要: 在上一個教程中,你已經看到如何處理兩個簡單項目之間的依賴。
這個教程將引導你完成在一個更加復雜的環境下的ivy使用。這個教程的所有源文件在ivy發行包的src/example/multi-project下可以得到。
閱讀全文
摘要: 這個示例將舉例說明在兩個項目之間的依賴。
depender項目聲明它使用dependee 項目。我們將闡明兩個事情:
* 被獨立的項目聲明的公共類庫將被依賴的項目自動獲取
* depender項目將獲取dependee項目的"最新"版本
閱讀全文
摘要: 在一些情況下,會發生這樣的事情:你的模塊描述符(ivy文件,maven pom, ...)被放置在一個地方,而模塊的制品(jars,...)在另外一個地方。
雙重解析器用于滿足這種類型的需求,而這個教程將展示如何使用它。
閱讀全文
摘要: 這個例子演示模塊是如何被多解析器獲得的。使用多解析器在很多情況下是非常有用的,這里是一些例子:
* 來自發行的單獨的集成構建
* 為第三方模塊使用公共倉庫并且為內部模塊使用私有倉庫
* 使用一個倉庫來存儲那些在無法管理的公共倉庫里里面的不清晰的模塊
* 使用本地倉庫來暴露在一個開發人員的位置上生成的構建
在ivy中,多解析器的使用是通過一個名為解析器鏈的復合解析器來支持的。
在我們的例子中,我們將簡單的展示如何使用兩個解析器,一個在本地倉庫而另一個使用maven2倉庫。
閱讀全文
摘要: ivy綁定一些默認設置,這使得在通常環境下使用ivy很容易。這個教程,接近于參考文檔,解釋這些默認設置是什么和他們怎樣調整來滿足你的需要。
為了完整的理解設置的概念和你可以用它們做什么,我們建議閱讀其他和設置相關的教程(如Multiple Resolvers 和 Dual Resolver)或者設置文件的參考文檔。
閱讀全文
摘要: 在這個例子中,我們將看到使用ivy的一個最簡單的方式。不使用任何特殊設置,ivy將使用maven2 倉庫來解析你在ivy文件中聲明的依賴。讓我們來看一眼涉及到的文件的內容。
你將在ivy發行包的src/example/hello-ivy 目錄下找到這個教程的源文件。
閱讀全文
摘要: 學習的最佳方式是實踐!這是ivy教程將幫助你做到的,發現一些偉大的ivy特性。
這里是非常優先的教程,它甚至不需要安裝ivy,如果你已經正確安裝了ant和jdk,甚至只需要花費不到30秒的時間
閱讀全文
摘要: 在ivy中有幾個任務被認為是后解析任務(post resolve task),并相應地共享公用行為和設置。
這些任務是:
* retrieve
* cachefileset
* cachepath
* artifactproperty (since 2.0)
* artifactreport (since 2.0)
閱讀全文
摘要: cachefileset,為配置構建一個有ivy緩存中的制品組成的ant fileset 從1.2版本起)。
這是一個后解析任務,有所有后解析任務共有的所有行為和屬性。注意這個任務不依賴retrieve,因為構建的fileset是由ivy緩存中的制品直接構成的。
閱讀全文
摘要: 為解析過的模塊配置構建一個由在ivy 緩存(或者取決于useOrigin 設置的原始位置)中的制品組成的ant path.
閱讀全文
摘要: 交付當前模塊的解析好的描述符,而且可能執行依賴的遞歸交付。
這個任務主要做兩個事情:
1. 生成一個解析好的ivy 文件
2. 執行遞歸交付
閱讀全文
摘要: 發行當前模塊的制品和已解析的描述符(已交付的ivy文件)。
這個任務的目的是發行當前模塊描述符和它的聲明的發行制品到倉庫中。
閱讀全文
摘要: configure任務用于通過xml設置文件來配置ivy。
閱讀全文
摘要: retrieve任務復制解析好的依賴到你的文件系統的任何位置。
這是一個post resolve任務,帶有所有post resolve任務共有的所有的行為和屬性。
閱讀全文
摘要: 解析任務實際解析在ivy文件中描述的依賴,并將解析后的依賴放置到ivy緩存中。
如果在resolve任務前沒有調用configure任務,則將使用默認的configuration (等同于不帶參數的調用configure).
閱讀全文
摘要: buildlist任務用于獲取按照ivy依賴信息從小到大排序的文件(通常是build.xml文件) 列表,或者相反(從1.2之后)
這個任務在結合subant構建相關項目集合時特別有效, 可以確保依賴在其他依賴它的模塊之前被構建
閱讀全文
摘要: 轉一個blog,關于如何使用ivy來處理native的依賴,對于有使用JNI開發的朋友應該很有價值。
原文blog地址:http://www.cooljeff.co.uk/2009/08/01/handling-native-dependencies-with-apache-ivy/
閱讀全文
摘要: ivy可以非常容易的作為一個單獨的程序使用。你所需要的只是一個java1.4+的運行環境(JRE)!
閱讀全文
摘要: 使用ivy的主要和最頻繁的方式是在ant構建文件中。不過,ivy也可以作為獨立的應用被調用。
閱讀全文
摘要: ivy的使用完全是基于以"ivy文件"著稱的模塊描述符。ivy文件是xml文件,通常被稱為ivy.xml,包含模塊依賴的描述,它發布的制品和它的配置。
閱讀全文
摘要: 為了如您所想的工作,ivy有時需要一些設置。實際上,ivy可以在完全沒有任何特殊設置的情況下工作,查閱默認設置文檔來獲取相關的更詳盡的信息。但是ivy有能力在完全不同的上下文下工作。你只需要正確的配置它。
閱讀全文
摘要: 安裝ivy主要有兩種方式,手工安裝或者自動安裝。
閱讀全文
摘要: 這里有一些我們從我們的經驗和一些客戶的顧問工作中收集到的建議和最佳實踐。
5) 處理集成版本
6) 是否將依賴內聯(inlining)
7) 雇用專家
閱讀全文
摘要: 這里有一些我們從我們的經驗和一些客戶的顧問工作中收集到的建議和最佳實踐。
1) 為所有的模塊添加模塊描述符
2) 使用自己的企業倉庫
3) 至少在組織和模塊上使用模式
4) 為公共倉庫發布ivysettings.xml
閱讀全文
摘要: 前面已經介紹了ivy主要的術語和概念,現在是時候說明ivy如何工作的了。
閱讀全文
摘要: 在學習ivy的過程中陸陸續續的翻譯了一些ivy的參考文檔,現在準備將這個工作進行到底,將官方網站上完整的ivy參考文檔翻譯成中文。上面內容是參考文檔的目錄,翻譯完成的部分我會陸續更新為中文并加入鏈接。
英文文檔地址請見:http://ant.apache.org/ivy/history/latest-milestone/reference.html
水平有限,出現錯誤的地址請多多指正。
閱讀全文
摘要: ivy中引入了一些自己的概念,了解并理會這些概念對ivy的學習使用是有幫助的。這里翻譯一下官網的介紹ivy主要概念的文章,原文在此:http://ant.apache.org/ivy/history/2.1.0-rc1/concept.html
因內容太長而拆分,下面是第二部分。
閱讀全文
摘要: ivy中引入了一些自己的概念,了解并理會這些概念對ivy的學習使用是有幫助的。這里翻譯一下官網的介紹ivy主要概念的文章,原文在此:http://ant.apache.org/ivy/history/2.1.0-rc1/concept.html
因內容太長而拆分,下面是第一部分
閱讀全文
摘要: ivy中有一套自己特定的術語,了解并熟悉他們對ivy的使用非常重要,尤其對于ivy新手。
閱讀全文
摘要: maven很強大,但是遠不完美,令人煩惱的地方也不少。看到Ivy似乎日漸成熟,試試看這個小東西表現如何,畢竟后面有那個強大的我喜歡的ant。
折騰了一番,整理出來點東西,分享給對ivy同樣感興趣的朋友。依然是"初學"系列,提供給新手入門使用。
閱讀全文
摘要: 從http://m2eclipse.sonatype.org/update下在線安裝m2eclipse,現在的版本是0.9.7,20090209的版本,應該是新出來的。安裝時出現錯誤提示導致無法安裝:
Cannot complete the request. See the details.
Cannot find a solution satisfying the following requirements org.eclipse.ui.workbench [3.4.2.M20090127-1700].
閱讀全文
摘要: 升級到m2eclipse 0.9.7版本后,發現一個問題,maven Assembly plugin無法工作,具體是在eclipse下執行"run as" --> "maven package"時,報錯:
[INFO] Failed to create assembly: Error adding file 'net.runafter.nptt:NpttCore:jar:0.1.0' to archive:
G:\workspace\private\tools\nptt\trunk\NpttCore\target\classes isn't a file.
可以看到,maven Assembly plugin試圖以操作文件的方式操作目錄NpttCore\target\classes,因此失敗造成整個package命令執行失敗。
閱讀全文
摘要: 在上一篇文章中,討論到在對maven的機制不熟悉的情況下,為了實現自己需要的打包格式而使用maven ant task以maven + ant的方式來實現非標準打包,而現在要介紹的是maven中針對打包任務而提供的標準插件:assembly plugin。
閱讀全文
摘要: maven很強大,但是總有些事情干起來不是得心應手,沒有使用ant時那種想怎么干就怎么干的流暢感。尤其當要打包一個特殊(相對maven的標準架構而且)時,常有不知所措的感覺。當然這個應該和自己對maven的了解不夠有關,畢竟,“初學maven”嘛。
但是maven在依賴管理方面實在是太強大了,太喜歡,退回原來的ant方式完全不可能,我想用過maven的人,一般是不會有回到原來在 cvs,subversion中checkin/checkout n個jar包的時代,僅此一項理由就足夠繼續堅持使用maven了。
然而ant的靈活又難于忘懷,尤其是從ant的build.xml一路走來的人,總是回不知不覺間想到ant的美好。魚與熊掌,我都想要。
閱讀全文
摘要: 之前看到過一些Nexus的介紹,由于剛開始接觸maven時使用的私服是artifactory,因此沒有太在意。今天想著既然Nexus能有膽量出來混,應該有點真本事才是,看了一下nexus的安裝介紹,挺簡單的,試試無妨。因此裝上小試了一下,結果喜出望外,nexus的表現非常不錯,尤其是在開啟遠程索引之后,簡直太方便了。
于是決定放棄artifactory改而使用nexus作為自己的maven私服。恩,慚愧,頗有點喜新厭舊的味道,artifactory才裝上來沒有幾天,就慘遭拋棄......
閱讀全文
摘要: 前段時間研究過一下maven,中途因為工作忙擱置了一段時間,重新再看時發現安裝過程基本忘光。只好找資料看然后再來一遍,將 maven,artifactory和m2eclipse安裝使用的全過程記錄整理出來,備忘。另外我想這些資料應該比較適合maven的入門新手,照做一遍就可以完成三個東西的安裝設置,然后就可以學習和使用了。
閱讀全文
摘要: 初學maven,遇到不少問題,記錄下來,呵呵,依然是備忘兼共享。
閱讀全文