Maven構建自動化

構建自動化定義相關工程項目構建過程中,在當項目構建成功完成啓動的情況下,來確保所依賴的項目是穩定的。

實例

考慮一個團隊正在開發一個項目總線核心API上的其他兩個項目的應用程序:網頁UI和應用程序的桌面UI的依賴。

app-web-ui 項目使用1.0-SNAPSHOT總線核心API項目


4.0.0
app_web_ui
app_web_ui
1.0
jar
app_web_ui
http://maven.apache.org

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>



junit
junit
3.8.1
test


bus_core_api
bus_core_api
1.0-SNAPSHOT
system
C:\MVN\bus_core_api\target\bus_core_api-1.0-SNAPSHOT.jar


app-desktop-ui 項目使用總線核心API項目 1.0-SNAPSHOT

<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"\> 4.0.0 app-desktop-ui app-desktop-ui 1.0 jar bus-core-api bus-core-api 1.0-SNAPSHOT

bus-core-api 項目

<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"\> 4.0.0 bus-core-api bus-core-api 1.0-SNAPSHOT jar

現在,每當bus-core-api項目的變化時,app-web-ui和app-desktop-ui項目團隊需要自己編譯過程。

使用快照確保可以使用最新的 bus-core-api 項目,但要滿足上面我們需要做一些額外的要求。

  • 添加一個生成後的目標 bus-core-api POM的應用程序是在 app-web-ui 和 app-desktop-ui 的基礎之上。

  • 使用持續集成(CI)的服務器自動管理構建自動化。

使用Maven

更新總線核心API項目pom.xml

<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"\> 4.0.0 bus-core-api bus-core-api 1.0-SNAPSHOT jar maven-invoker-plugin 1.6 true app-web-ui/pom.xml app-desktop-ui/pom.xml build run

讓我們打開命令控制檯,進入到C: /> MVN > bus-core-api目錄,然後執行以下命令mvn命令。

C:/MVN/us-core-api>mvn clean package -U

Maven將開始構建項目bus-core-api。

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building bus-core-api
[INFO] task-segment: [clean, package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:MVNus-core-ui arget
bus-core-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------

當 bus-core-api 構建成功,Maven將開始構建應用程序 app-web-ui

[INFO] ------------------------------------------------------------------
[INFO] Building app-web-ui
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:MVNapp-web-ui arget
app-web-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------

當 app-web-ui 構建成功,Maven將開始構建 app-desktop-ui 項目

[INFO] ------------------------------------------------------------------
[INFO] Building app-desktop-ui
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:/MVN/app-desktop-ui arget
app-desktop-ui-1.0-SNAPSHOT.jar
[INFO] -------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------------------

使用Maven持續集成服務

使用CI服務器更適合作爲開發人員,每次創建一個新的項目不需要更新 bus-core-api 項目的 POM,例如 app-mobile-ui 添加作爲 bus-core-api 項目相關的項目。Hudson 自動管理使用 Maven 依賴管理構建自動化。 

automated

Hudson 認每個項目生成的工作。一旦一個項目的代碼簽入到SVN(或映射到哈德森任何源管理工具),哈德森開始它的構建工作,一旦這項工作得到完成,它會自動啓動其他相關工作(其他相關項目)。

在上面的例子中,當bus-core-ui 源代碼SVN更新,Hudson 開始它的構建。當構建成功,Hudson 自動查找相關的項目,並開始構建 app-web-ui 和app-desktop-ui 項目。