带你玩转Maven自动化部署

在开发团队数据较多,有发布交集的迭代开发时,版本号的命名,依赖版本号的修改,会加重我们的工作负担。发布版本改版本号这种既没有技术含量,又费神的工作不应该让机器去完成吗?(依赖版本号写错,有时候会造成麻烦)接下来我将带你一起完成maven自动化部署。

版本变更自动化部署

    • 一、引入自动化工具——maven release插件
    • 二、配置发布目的地——私服
      • 2.1 告诉maven发布仓库的地址
      • 2.2 告诉maven下载构件的仓库地址
    • 三、全局设置maven私服仓库
    • 四、运行自动化部署命令
      • 1. prepare 命令
        • 1.1 执行前项目版本状态:
        • 1.2 命令执行:
        • 1.3 执行效果:
          • 1.3.1 生成预备文件
          • 1.3.2 变更新的开发版本号
      • 2. perform 命令
        • 2.1 执行命令
        • 2.2 命令执行的内容:
        • 2.3 执行效果:

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

maven插件官网文档

  1. pom.xml文件中引入release插件:
<project>
  ...
   <build>
        <finalName>mvn-auto-releasefinalName>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.pluginsgroupId>
                    <artifactId>maven-release-pluginartifactId>
                    <version>3.0.0-M1version>
                    <configuration>
                        <tagBase>https://github.com/Luolanjiao/test-auto-release/tree/tagstagBase>
                    configuration>
                plugin>
            plugins>
        pluginManagement>
    build>
  ...
project>
  1. 配置scm资源配置服务的信息,告诉release插件代码资源的位置。
<project>
...
<scm>
   <connection>scm:git:https://github.com/Luolanjiao/test-auto-release.gitconnection>
   <developerConnection>scm:git:https://github.com/Luolanjiao/test-auto-release.gitdeveloperConnection>
   <url>https://github.com/Luolanjiao/test-auto-release.giturl>
scm>
project>

二、配置发布目的地——私服

2.1 告诉maven发布仓库的地址

在pom.xml文件中设置发布的私服地址,私服地址要对应上篇文章中启用的nexus服务的仓库地址。仓库分为几类,其中的release和snapshot是用来存放私有应用的,点击对应的仓库可以查看配置信息,具体看图1。

<project>
...
   <distributionManagement>
        <repository>
            <id>releasesid>
            <name>Releasesname>
            <url>http://localhost:8081/nexus/content/repositories/releasesurl>
        repository>
        <snapshotRepository>
            <id>snapshotsid>
            <name>Snapshotsname>
            <url>http://localhost:8081/nexus/content/repositories/snapshotsurl>
        snapshotRepository>
    distributionManagement>
project>

图1:nexus私服仓库信息
带你玩转Maven自动化部署_第1张图片

2.2 告诉maven下载构件的仓库地址

    <repositories>
        <repository>
            <id>publicid>
            <name>publicname>
<url>http://localhost:8081/nexus/content/repositories/publicurl>
            <releases><enabled>trueenabled>releases>
            <snapshots><enabled>trueenabled>snapshots>
        repository>
    repositories>

三、全局设置maven私服仓库

在setting.xml中设置mirror为nexus仓库,以此可下载私服上的资源,且也可下载中央仓库的资源。因为私服找不到本地资源时会转为代理请求中央仓库。

  1. 先配置service访问信息,如果需要密码登录需要在services节点中配置;
<servers>
  <server>
      <id>releasesid>
      <username>adminusername>
      <password>admin123password>
    server>
	<server>
      <id>snapshotsid>
      <username>adminusername>
      <password>admin123password>
    server>
  servers>
  1. 配置镜像
    <mirror>
      <id>publicid>
      <mirrorOf>*mirrorOf>
      <name>my nexusname>
      <url>http://localhost:8081/nexus/content/groups/public/url>
    mirror>

四、运行自动化部署命令

1. prepare 命令

1.1 执行前项目版本状态:

版本处于快照版本—— xxx-SNAPSHOT
例如,我的项目版本正处于1.0.3-SNAPSHOT
带你玩转Maven自动化部署_第2张图片

1.2 命令执行:

mvn release:prepare

maven会提示你发布的版本号和新开发版本号,如果默认则直接回车,需要指定则输入指定的版本号后回车,效果如下图:
带你玩转Maven自动化部署_第3张图片
说明:
release:prepare命令执行包含了clean、resource、compile、testResources、testComplie、test、war
带你玩转Maven自动化部署_第4张图片

1.3 执行效果:

一是生成预备文件,二是将pom.xml文件中的版本号变更为了新的开发版本号。

1.3.1 生成预备文件

执行release:prepare命令后会自动生成执行清单文件(这两个文件一般不需要关心,因为最终执行perform命令后,这两个文件会被自动删除):
release.properties
pom.xml.releaseBackup
带你玩转Maven自动化部署_第5张图片

1.3.2 变更新的开发版本号

可以看到下图,版本号已经由"1.0.3-SNAPSHOT"变更为"1.0.4-SNAPSHOT"。
带你玩转Maven自动化部署_第6张图片

2. perform 命令

2.1 执行命令

mvn release:perform

2.2 命令执行的内容:

perform执行的最终目的是deploy。不仅与release:prepare一样执行了clean、resource、compile、testResources、testComplie、test、war阶段命令,还执行了install,deploy。以此看来,不需要先执行prepare命令也可以直接执行perform命令。
带你玩转Maven自动化部署_第7张图片

2.3 执行效果:

查看nexus私服仓库,可以看到刚刚deploy的1.0.3版本包。
带你玩转Maven自动化部署_第8张图片
以此部署完成。

你可能感兴趣的:(版本管理)