溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

maven多個項目之間的依賴關(guān)系管理

發(fā)布時間:2021-09-14 08:49:03 來源:億速云 閱讀:208 作者:chen 欄目:編程語言

本篇內(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í)!

向AI問一下細(xì)節(jié)

免責(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)容。

AI