Maven構建自動化

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

實例

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

app-web-ui 項目使用1.0-SNAPSHOT總線核心API項目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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>app_web_ui</groupId>
   <artifactId>app_web_ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <name>app_web_ui</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>
	  <dependency>
         <groupId>bus_core_api</groupId>
         <artifactId>bus_core_api</artifactId>
         <version>1.0-SNAPSHOT</version>
		 <scope>system</scope>
		 <systemPath>C:\MVN\bus_core_api\target\bus_core_api-1.0-SNAPSHOT.jar</systemPath>
      </dependency>
   </dependencies>
</project>複製代碼


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

<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>app-desktop-ui</groupId> <artifactId>app-desktop-ui</artifactId> <version>1.0</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>bus-core-api</groupId> <artifactId>bus-core-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project>複製代碼

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"> <modelVersion>4.0.0</modelVersion> <groupId>bus-core-api</groupId> <artifactId>bus-core-api</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> </project>複製代碼

如今,每當bus-core-api項目的變化時,app-web-ui和app-desktop-ui項目團隊須要本身編譯過程。app

使用快照確保能夠使用最新的 bus-core-api 項目,但要知足上面咱們須要作一些額外的要求。框架

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

  • 使用持續集成(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"> <modelVersion>4.0.0</modelVersion> <groupId>bus-core-api</groupId> <artifactId>bus-core-api</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <build> <plugins> <plugin> <artifactId>maven-invoker-plugin</artifactId> <version>1.6</version> <configuration> <debug>true</debug> <pomIncludes> <pomInclude>app-web-ui/pom.xml</pomInclude> <pomInclude>app-desktop-ui/pom.xml</pomInclude> </pomIncludes> </configuration> <executions> <execution> <id>build</id> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> <build> </project>複製代碼

讓咱們打開命令控制檯,進入到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 依賴管理構建自動化。


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

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

願意瞭解框架技術或者源碼的朋友直接求求交流分享技術:2042849237
分佈式的一些解決方案,有願意瞭解的朋友能夠找咱們團隊探討
更多詳細源碼參考來源:minglisoft.cn/technology

相關文章
相關標籤/搜索