maven(六)的自动化部署

6.1 部署操作的一般性步骤

  1. 将项目的代码提交到代码库中并打标签
  2. 从代码库中下载完整的源代码
  3. 构建应用
  4. 将构建好的包存储到固定的网络位置下
  5. 从网络位置获取构建好的文件部署到生产环境中
  6. 更新文档并且更新应用的版本号

6.2 自动化部署的实现

6.2.1 在项目的pom.xml中添加相应的配置

配置项介绍:

  1. scm:配置代码仓的路径,maven会从该路径下载源代码
  2. distributionManagement:配置存储构建的仓库
  3. maven-release-plugin: 用于实现自动化部署的过程

示例配置:

<distributionManagement>
    <snapshotRepository>
        <id>snapshotsid>
        <name>Central snapshots Repositoryname>
        <url>http://localhost:8081/repository/maven-snapshots/url>
    snapshotRepository>
    <repository>
        <id>releasesid>
        <name>Central-releases Repositoryname>
        <url>http://localhost:8081/repository/maven-releases/url>
    repository>
distributionManagement>
<scm>
    <developerConnection>scm:svn:https://gitee.com/you-always-want-to-know/test-maven.gitdeveloperConnection>
    <connection>scm:svn:https://gitee.com/you-always-want-to-know/test-maven.gitconnection>
scm>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.pluginsgroupId>
            <artifactId>maven-release-pluginartifactId>
            <version>3.0.0-M4version>
            <configuration>
                <autoVersionSubmodules>trueautoVersionSubmodules>
            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执行的部分日志如下
maven(六)的自动化部署_第1张图片

mvn release:prepare执行注意点

  • 如果有未提交代码,mvn release:prepare执行会报错

  • 在执行过程中会提示输入要发布的版本号代码的标签新的版本号,可以输入指定,直接回车表示使用默认值。

查看该命令执行后的效果

  • 使用git tag命令查看代码仓的标签是否成功生成
    image-20211122113119509.png

  • 查看项目的版本号变化,可以看到从1.0 变成了 1.1(本地代码仓和远程代码仓都变了)maven(六)的自动化部署_第2张图片

6.2.3 执行命令 mvn release:perform

mvn release:perform包含具体操作如下

  • 验证prepare阶段是否执行完成

  • 将代码从带有标签的SCM URL(代码远程仓库)签出

  • 运行预定义的Maven goals来发布项目(默认情况下,deploy site-deploy)

查看该命令执行后的效果

  • 在maven私服中查看,可以看到发布的jar包
    maven(六)的自动化部署_第3张图片

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

    对这个错误的一些解释

    https://stackoverflow.com/questions/30740183/maven-releaseprepare-with-pom-removes-release-pom-then-tries-to-add-it?noredirect=1

maven-release-plugin常用配置项

  • true:如果是多模块项目,默认情况下系统将提示您输入项目的每个模块的版本号,如果您希望每个模块都具有与父POM相同的版本,则可以设置autoVersionSubmodulestrue

  • v@{project.version}: 该配置指定tag的格式,默认为{project.artifactId}-{project.version}

你可能感兴趣的:(maven,maven)