6.1 部署操作的一般性步骤
- 将项目的代码提交到代码库中并打标签
- 从代码库中下载完整的源代码
- 构建应用
- 将构建好的包存储到固定的网络位置下
- 从网络位置获取构建好的文件部署到生产环境中
- 更新文档并且更新应用的版本号
6.2 自动化部署的实现
6.2.1 在项目的pom.xml中添加相应的配置
配置项介绍:
- scm:配置代码仓的路径,maven会从该路径下载源代码
- distributionManagement:配置存储构建的仓库
- maven-release-plugin: 用于实现自动化部署的过程
示例配置:
<distributionManagement>
<snapshotRepository>
<id>snapshots</id>
<name>Central snapshots Repository</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
<repository>
<id>releases</id>
<name>Central-releases Repository</name>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
<scm>
<developerConnection>scm:svn:https://gitee.com/you-always-want-to-know/test-maven.git</developerConnection>
<connection>scm:svn:https://gitee.com/you-always-want-to-know/test-maven.git</connection>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.0.0-M4</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
</configuration>
</plugin>
</plugins>
</build>
6.2.2 执行命令mvn release:prepare
mvn release:prepare包含的具体操作如下:
- 检查源中是否有未提交的更改
- 检查是否没有快照依赖项
- 将POMs中的版本从x-SNAPSHOT更改为新版本(将提示您使用的版本)
- 将POM中的SCM信息转换为包含标签的最终地址
- 针对修改后的pom运行测试用例,以确认一切都处于正常工作状态
- 提交修改后的POMs
- 用版本名标记SCM中的代码(将提示输入)
- 将POMs中的版本提升到一个新的值y-SNAPSHOT(这些值也会被提示为)
- 提交修改后的POMs
mvn release:prepare执行的部分日志如下:
mvn release:prepare执行注意点:
-
如果有未提交代码,mvn release:prepare执行会报错
-
在执行过程中会提示输入要发布的版本号,代码的标签,新的版本号,可以输入指定,直接回车表示使用默认值。
查看该命令执行后的效果:
-
使用git tag命令查看代码仓的标签是否成功生成
-
查看项目的版本号变化,可以看到从1.0 变成了 1.1(本地代码仓和远程代码仓都变了)
6.2.3 执行命令 mvn release:perform
mvn release:perform包含具体操作如下:
-
验证prepare阶段是否执行完成
-
将代码从带有标签的SCM URL(代码远程仓库)签出
-
运行预定义的Maven goals来发布项目(默认情况下,deploy site-deploy)
查看该命令执行后的效果:
- 在maven私服中查看,可以看到发布的jar包
6.2.4 补充自动部署相关知识点
maven-release-plugin的常用目标介绍:
mvn release:clean # 发布准备后进行清理
mvn release:prepare # 在SCM中准备一个发布
mvn release:prepare-with-pom # 在SCM中准备一个发布
mvn release:rollback # 回滚以前的版本
mvn release:perform # 在SCM中执行一个发布
mvn release:stage # 执行SCM发布到一个暂存文件夹/仓库
mvn release:branch # 创建当前项目的分支,并更新所有版本。
mvn release:update-versions # Update the versions in the POM(s).
maven-release-plugin注意点:
-
如果mvn release:prepare执行发生错误或者取消进程,则再次运行该命令将从最后一个停止的位置开始。如果想从头执行需要使用
mvn release:prepare -Dresume=false
或者mvn release:clean release:prepare
-
如果发生错误时已经对源文件进行了更改,则可能需要在重启准备过程之前还原这些源文件,可以使用
mvn release:rollback
-
mvn release:prepare-with-pom
执行会报一个错误:The git-add command failed. Command output: fatal: pathspec 'release-pom.xml' did not match any files
对这个错误的一些解释
maven-release-plugin常用配置项:
-
<autoVersionSubmodules>true</autoVersionSubmodules>
:如果是多模块项目,默认情况下系统将提示您输入项目的每个模块的版本号,如果您希望每个模块都具有与父POM相同的版本,则可以设置autoVersionSubmodules
为true
。 -
<tagNameFormat>v@{project.version}</tagNameFormat>
: 该配置指定tag的格式,默认为{project.artifactId}-{project.version}