跳过正文
  1. 博客文章/

Maven Release Plugin 使用指南:私服配置与自动化发布

·143 字·1 分钟·
DevOps Maven CI/CD
Zayn
作者
Zayn
专注 Kubernetes、CI/CD、可观测性等云原生技术栈,记录生产环境中的实战经验与踩坑复盘。
目录

推荐阅读
#

settings.xml 私服配置
#

下面是一个 Nexus 私服的 settings.xml 配置模板。实际使用时需替换为自己的服务器地址和凭据:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
          http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <servers>
    <server>
      <id>nexus-snapshot</id>
      <username>${NEXUS_USER}</username>
      <password>${NEXUS_PASSWORD}</password>
    </server>
    <server>
      <id>nexus-release</id>
      <username>${NEXUS_USER}</username>
      <password>${NEXUS_PASSWORD}</password>
    </server>
  </servers>

  <mirrors>
    <mirror>
      <id>nexus-snapshot</id>
      <mirrorOf>*</mirrorOf>
      <url>https://your-nexus-domain/repository/maven-public/</url>
    </mirror>
    <mirror>
      <id>nexus-release</id>
      <mirrorOf>*</mirrorOf>
      <url>https://your-nexus-domain/repository/maven-public/</url>
    </mirror>
  </mirrors>

  <profiles>
    <profile>
      <id>nexus</id>
      <repositories>
        <repository>
          <id>central</id>
          <name>nexus</name>
          <url>https://your-nexus-domain/repository/maven-public/</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <name>nexus</name>
          <url>https://your-nexus-domain/repository/maven-public/</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>

提示:建议通过环境变量或 Maven Master Password 加密机制管理凭据,避免明文写入配置文件。

使用 release:prepare 构建指定版本
#

Maven Release Plugin 在执行 prepare 时会基于当前分支创建一个 release 分支并 push 到远端。如果不想自动 push(比如与团队的分支管理策略冲突),可以加 -DpushChanges=false

构建指定版本号的 release 制品:

mvn -B release:prepare \
  -DtagNameFormat=@{project.version} \
  -DreleaseVersion=1.0.4 \
  -DpushChanges=false \
  -Dmaven.test.skip=true \
  -T $(nproc)

使用 release:perform 发布至私服
#

构建完成后,执行 perform 将制品上传到 Nexus release 仓库:

mvn release:perform \
  -Darguments='-Dmaven.javadoc.skip=true' \
  -Dmaven.test.skip=true \
  -DlocalCheckout=true \
  -T $(nproc)

参考文档
#

https://maven.apache.org/maven-release/maven-release-plugin/plugin-info.html

相关文章

企业级 GitLab 平台部署与运维完整指南
·3964 字·19 分钟
Docker Docker Compose DevOps Gitlab Docker Devops Git CI/CD
企业级 Jenkins CI/CD 平台部署与配置完整指南
·4484 字·22 分钟
DevOps Jenkins CI/CD Devops Automation Pipeline
GitLab Pre-receive 钩子的配置与使用指南
·968 字·5 分钟
DevOps Gitlab Webhook Shell