您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“maven多個項目之間的依賴關(guān)系管理”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“maven多個項目之間的依賴關(guān)系管理”吧!
1.應(yīng)用Aggregation管理多個子項目
Maven中有一個Aggregation(聚合),可以將多個項目作為模塊添加到一個pom.xml中,然后告訴Jenkins這個頂層pom.xml,就可以自動從Git中拿出這些項目的源代碼,并build所有的子項目和運行相應(yīng)的測試程序。我這里使用的是TestNG。
比如我有兩個maven項目client和email_sender,我希望一次編譯并測試,在這兩個項目文件夾之上的目錄上添加一個pom.xml,內(nèi)容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.kaimei.datacenter</groupId> <artifactId>cml</artifactId> <version>2.0</version> <packaging>pom</packaging> <modules> <module>client</module> <module>email_sender</module> </modules> </project>
然后只要告訴Jenkins中這個pom.xml的路徑即可。點擊build now進行測試,可以看到兩個子項目都已經(jīng)被下載源代碼和編譯,運行了TestNG的測試程序。
注意module名稱應(yīng)該是子項目的目錄名。
2.多個項目之間的依賴關(guān)系管理
client和email_sender項目在上例中沒有關(guān)聯(lián)關(guān)系,為了演示持續(xù)集成在依賴樹的build管理,現(xiàn)在建立一個新的maven項目名叫mongo_utility,這個項目提供了一個類DBManager封裝了MongoDB的連接,代碼來源于我的另一篇文章:http://blog.csdn.net/sheismylife/article/details/7090526
client項目和email_sender項目都通過DBManager類來和MongoDB建立連接。因此它們的pom.xml中都有這一段:
<dependency> <groupId>com.kaimei.datacenter</groupId> <artifactId>mongo_utility</artifactId> <version>1.0</version> </dependency>
build成功。仔細(xì)看Console Output,Jenkins的行為和直接使用mvn clean compile不太一樣。Jenkins會將mongo_utility的源代碼取出來,然后重新編譯,安裝到本地倉庫,然后再編譯其他兩個工程。如果直接敲mvn clean compile的話,mongo_utility-1.0.jar會直接從私服上下載然后安裝,不會編譯。
3.多個項目共享相同的設(shè)置
client,email_sender和mongo_utility三個項目都用到了mongodb java library,為了便于管理,沒有必要讓它們各自的pom.xml中都定義相同的dependency。Maven將每個項目的pom.xml看作一個工程對象,通過繼承可以讓它們共享同一個配置。
在頂層的pom.xml中添加mongodb依賴:
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>2.7.2</version> </dependency> </dependencies>
然后在client,mongo_utility和email_sender項目的pom.xml中分別刪除上面的依賴,并添加如下配置:
<parent> <groupId>com.kaimei.datacenter</groupId> <artifactId>cml</artifactId> <version>1.0</version><!-- or whatever version you use --> <relativePath>../pom.xml</relativePath> </parent>
然后測試,大功告成。
4.模塊部署到nexus服務(wù)器上
如果想將某個模塊項目比如這里的mongo_utility項目部署到nexus服務(wù)器上,需要調(diào)整頂層目錄的pom.xml,加上下面的配置:
<distributionManagement> <repository> <id>sheismylife</id> <url>http://S1:8081/nexus/content/repositories/sheismylife</url> </repository> </distributionManagement>
但是這樣三個模塊項目都自動繼承了deploy功能。其實我只想mongo-utility模塊部署到nexus上,暫時把問題放在這里吧。
然后在頂層目錄上執(zhí)行mvn clean deploy,一切順利。將代碼提交到git倉庫中,然后修改Jenkins的項目配置頁面,添加clean deploy命令。
點擊Build Now按鈕,看看結(jié)果,一切OK.值得一提的是,如果你通過mvn命令行執(zhí)行正確,而通過Jenkins執(zhí)行錯誤,重新啟動一下Jenkins服務(wù),或許能解決。我已經(jīng)碰到幾次了,似乎Jenkins有bug.
5.通過Jenkins將web項目部署到Glassfish或者Tomcat
基本做法還是通過Maven項目的plugin來完成部署。有一個問題是如果web項目和其他幾個項目都作為一個大項目的模塊被聚合在一起,而且都繼承某個parent pom.xml,那么如何用一個Maven命令就能編譯所有的模塊,部署到nexus私服,而且將web項目發(fā)布到Glassfish或者Tomcat上。還正在研究,希望能夠夠通過Maven來實現(xiàn)這個功能。
6.一個Jenkins上的多個project之間的順序執(zhí)行
這個很簡單,Jenkins的project配置里面可以設(shè)置在某個project之后build,或者在本project build之后build other project.
7.多個Jenkins之間的遠(yuǎn)程調(diào)用
S1上的Jenkins A調(diào)用某個shell腳本,比如curl http://S2/job/test/build
S2上的Jenkins B的test project就會被觸發(fā)
到此,相信大家對“maven多個項目之間的依賴關(guān)系管理”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。