Maven自動化部署


在專案開發中,通常是部署過程包含以下步驟

  • 檢入程式碼在建專案全部進入SVN或原始碼庫中,並標記它。

  • 從SVN下載完整的原始碼。

  • 構建應用程式。

  • 生成輸出要麼WAR或EAR檔案儲存到一個共同的網路位置。

  • 從網路獲取的檔案和檔案部署到生產現場。

  • 更新日期和應用程式的更新版本號的檔案。

問題說明

通常有多人參與了上述部署過程。一個團隊可能手動簽入的程式碼,其他人可以處理構建等。這很可能是任何一個步驟可能會錯過了,由於涉及和由於多團隊環境手動工作。例如,較舊的版本可能不會被更換網路裝置和部署團隊再部署舊版本。

解決

通過結合自動化的部署過程
  • Maven構建和釋放專案,

  • SubVersion原始碼庫,管理原始碼,

  • 和遠端儲存庫管理器(Jfrog/ Nexus)來管理專案的二進位制檔案。

更新專案的pom.xml

我們將使用Maven發布外掛來建立一個自動釋放過程。

例如:bus-core-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> 
   <scm>
      <url>http://www.svn.com</url>
      <connection>scm:svn:http://localhost:8080/svn/jrepo/trunk/
      Framework</connection>
      <developerConnection>scm:svn:${username}/${password}@localhost:8080:
      common_core_api:1101:code</developerConnection>
   </scm>
   <distributionManagement>
      <repository>
         <id>Core-API-Java-Release</id>
         <name>Release repository</name>
         <url>http://localhost:8081/nexus/content/repositories/
         Core-Api-Release</url>
      </repository>
   </distributionManagement>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.0-beta-9</version>
            <configuration>
               <useReleaseProfile>false</useReleaseProfile>
               <goals>deploy</goals>
               <scmCommentPrefix>[bus-core-api-release-checkin]-<
               /scmCommentPrefix>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>

在pom.xml中,下面是我們使用的重要元素

元素 描述
SCM Configures the SVN location from where Maven will check out the source code.
Repositories Location where built WAR/EAR/JAR or any other artifact will be stored after code build is successful.
Plugin maven-release-plugin is configured to automate the deployment process.

Maven發布外掛

Maven使用確實下列有用的任務maven-release-plugin.

mvn release:clean

它清除以防工作區的最後一個釋放的過程並不順利。

mvn release:rollback

回滾是為了以防工作空間程式碼和組態更改的最後一個釋放的過程並不順利。

mvn release:prepare

執行多個操作次數

  • 檢查是否有任何未提交的本地更改或不

  • 確保沒有快照依賴

  • 更改應用程式的版本並刪除快照從版本,以釋放

  • 更新檔案到 SVN.

  • 執行測試用例

  • 提交修改後POM檔案

  • 標籤程式碼在subversion中

  • 增加版本號和附加快照以備將來發行

  • 提交修改後的POM檔案到SVN。

mvn release:perform

檢查出使用前面定義的標籤程式碼並執行Maven的部署目標來部署戰爭或內建工件檔案庫。

讓我們開啟命令控制台,到 C: > MVN >bus-core-api 目錄並執行以下命令mvn命令。

C:MVNus-core-api>mvn release:prepare

Maven將開始建設該專案。一旦構建成功執行以下命令mvn命令。

C:MVNus-core-api>mvn release:perform

一旦構建成功,您可以在資料庫驗證上傳的JAR檔案。