带你玩转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版本包。
在这里插入图片描述
以此部署完成。

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