帶你玩轉Maven自動化部署

在開發團隊數據較多,有發佈交集的迭代開發時,版本號的命名,依賴版本號的修改,會加重我們的工作負擔。發佈版本改版本號這種既沒有技術含量,又費神的工作不應該讓機器去完成嗎?(依賴版本號寫錯,有時候會造成麻煩)接下來我將帶你一起完成maven自動化部署。

一、引入自動化工具——maven release插件

maven插件官網文檔

  1. pom.xml文件中引入release插件:
<project>
  ...
   <build>
        <finalName>mvn-auto-release</finalName><!--自主命名-->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>3.0.0-M1</version>
                    <configuration>
                        <tagBase>https://github.com/Luolanjiao/test-auto-release/tree/tags</tagBase><!--配置你的tag地址,我用的是gitub倉庫-->
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
  ...
</project>
  1. 配置scm資源配置服務的信息,告訴release插件代碼資源的位置。
<project>
...
<scm>
   <connection>scm:git:https://github.com/Luolanjiao/test-auto-release.git</connection>
   <developerConnection>scm:git:https://github.com/Luolanjiao/test-auto-release.git</developerConnection>
   <url>https://github.com/Luolanjiao/test-auto-release.git</url>
</scm>
</project>

二、配置發佈目的地——私服

2.1 告訴maven發佈倉庫的地址

在pom.xml文件中設置發佈的私服地址,私服地址要對應上篇文章中啓用的nexus服務的倉庫地址。倉庫分爲幾類,其中的release和snapshot是用來存放私有應用的,點擊對應的倉庫可以查看配置信息,具體看圖1。

<project>
...
   <distributionManagement>
        <repository>
            <id>releases</id>
            <name>Releases</name>
            <url>http://localhost:8081/nexus/content/repositories/releases</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Snapshots</name>
            <url>http://localhost:8081/nexus/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>
</project>

圖1:nexus私服倉庫信息
在這裏插入圖片描述

2.2 告訴maven下載構件的倉庫地址

    <repositories>
        <repository>
            <id>public</id><!--id是自定義的-->
            <name>public</name><!--name是自定義的-->
<url>http://localhost:8081/nexus/content/repositories/public</url>
            <releases><enabled>true</enabled></releases>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
    </repositories>

三、全局設置maven私服倉庫

在setting.xml中設置mirror爲nexus倉庫,以此可下載私服上的資源,且也可下載中央倉庫的資源。因爲私服找不到本地資源時會轉爲代理請求中央倉庫。

  1. 先配置service訪問信息,如果需要密碼登錄需要在services節點中配置;
<servers>
  <server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
	<server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>
  1. 配置鏡像
    <mirror>
      <id>public</id>
      <mirrorOf>*</mirrorOf>
      <name>my nexus</name>
      <url>http://localhost:8081/nexus/content/groups/public/</url>
    </mirror>

四、運行自動化部署命令

1. prepare 命令

1.1 執行前項目版本狀態:

版本處於快照版本—— xxx-SNAPSHOT
例如,我的項目版本正處於1.0.3-SNAPSHOT
在這裏插入圖片描述

1.2 命令執行:

mvn release:prepare

maven會提示你發佈的版本號和新開發版本號,如果默認則直接回車,需要指定則輸入指定的版本號後回車,效果如下圖:
在這裏插入圖片描述
說明:
release:prepare命令執行包含了clean、resource、compile、testResources、testComplie、test、war
在這裏插入圖片描述

1.3 執行效果:

一是生成預備文件,二是將pom.xml文件中的版本號變更爲了新的開發版本號。

1.3.1 生成預備文件

執行release:prepare命令後會自動生成執行清單文件(這兩個文件一般不需要關心,因爲最終執行perform命令後,這兩個文件會被自動刪除):
release.properties
pom.xml.releaseBackup
在這裏插入圖片描述

1.3.2 變更新的開發版本號

可以看到下圖,版本號已經由"1.0.3-SNAPSHOT"變更爲"1.0.4-SNAPSHOT"。
在這裏插入圖片描述

2. perform 命令

2.1 執行命令

mvn release:perform

2.2 命令執行的內容:

perform執行的最終目的是deploy。不僅與release:prepare一樣執行了clean、resource、compile、testResources、testComplie、test、war階段命令,還執行了install,deploy。以此看來,不需要先執行prepare命令也可以直接執行perform命令。
在這裏插入圖片描述

2.3 執行效果:

查看nexus私服倉庫,可以看到剛剛deploy的1.0.3版本包。
在這裏插入圖片描述
以此部署完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章