1. 程式人生 > >Maven 快照及構建自動化

Maven 快照及構建自動化

nbsp pac 構建 文件 pack 啟動 修正 負責 同時

快照的作用

  一個團隊工作負責應用程序的前端應用用戶接口工程(app-ui.jar:1.0)),同時他們使用數據服務工程(data-service.jar:1.0)。

  現在負責數據服務的團隊可能正在進行修正 bug 或者增強功能,並快速叠代,然後他們幾乎每天都會 release 工程庫文件到遠程倉庫中。

現在如果數據服務團隊每天上傳新的版本,那麽就會有下面的問題:

  • 每次數據服務團隊發布了一版更新的代碼時,都要告訴應用接口團隊。
  • 應用接口團隊需要定期更新他們的 pom.xml 來得到更新的版本。

  快照是一個特殊的版本,它表示當前開發的一個副本。與常規版本不同,Maven 為每一次構建從遠程倉庫中檢出一份新的快照版本。現在數據服務團隊會將每次更新的代碼的快照(例如 data-service:1.0-SNAPSHOT)發布到倉庫中,來替換舊的快照 jar 文件。對於快照,每次用戶接口團隊構建他們的項目時,Maven 將自動獲取最新的快照(data-service:1.0-SNAPSHOT)。

構建自動化

  快照能保證數據服務是最新的,但是接口工程不能隨時被自動構建,有兩種方式解決:

  1、在接口工程的 pom 文件裏添加一個編譯目標來提醒其構建。

  2、使用一個持續集成(CI)的服務器,比如 Hudson或者是Jenkins,來實現自動化創建。

更新數據服務pom文件:

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

執行mvn命令

C:\MVN\bus-core-api>mvn clean package -U

使用Hudson或者是Jenkins

  Hudson 把每次創建工程看做一個工作。一旦工程代碼合入到 svn 或者其他任何的映射到Hudson上的代碼源管理工具上,Hudson 便開始一次的創建工作,等到該工作完成後,它將會自動創建其他相關的依賴工作或者依賴工程。

  在上面的例子中,當 bus-core-api 的源代碼在 SVN 上有更新時, Hudson 將會啟動創建。當創建完成後,Hudson 開始自動尋找其依賴的工程,然後啟動 app-web-ui 和 app-desktop-ui 工程。

Maven 快照及構建自動化