位置:首頁 > Java技術 > Maven教學 > Maven構建自動化-Hudson

Maven構建自動化-Hudson

建立自動化定義場景,依賴項目建設過程中被啟動,一旦項目生成成功完成,以確保相關的項目是穩定的。

實例

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

app-web-ui 項目使用1.0-SNAPSHOT總線核心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>
   <dependencies>
      <dependency>
      <groupId>bus-core-api</groupId>
         <artifactId>bus-core-api</artifactId>
         <version>1.0-SNAPSHOT</version>
      </dependency>
   </dependencies>
</project>

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">
   <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>

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

使用快照確保應使用最新的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">
   <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:MVNus-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:MVNapp-desktop-ui	arget
app-desktop-ui-1.0-SNAPSHOT.jar
[INFO] -------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------------------

使用Maven持續集成服務

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

automated build

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

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