Maven发布到Nexus

本文介绍了如何使用Maven和Nexus进行软件发布,包括在pom.xml中配置scm和distributionManagement元素,使用maven-release-plugin和nexus-staging-maven-plugin进行发布,以及在Jenkins中执行发布过程的步骤。文章详细阐述了发布过程的三个关键步骤:clean release、prepare和perform,强调了在不同阶段需要注意的事项。
摘要由CSDN通过智能技术生成

1.概述

在本系列的上一篇文章中,我们将Maven设置为Nexus部署过程 。 在本文中,我们将在项目的pom以及Jenkins作业中使用Maven配置发布过程

2.

为了使Maven能够发布到Nexus Repository Server,我们需要通过distributionManagement元素定义存储库信息:

<distributionManagement>
   <repository>
      <id>nexus-releases</id>
      <url>http://localhost:8081/nexus/content/repositories/releases</url>
   </repository>
</distributionManagement>

托管的Release Repository在Nexus上是开箱即用的,因此无需显式创建它。

3. Maven

发布过程将与项目的源代码管理进行交互–这意味着我们首先需要在pom.xml中定义<scm>元素:

<scm>
   <connection>scm:git:https://github.com/user/project.git</connection>
   <url>http://github.com/user/project</url>
   <developerConnection>scm:git:https://github.com/user/project.git</developerConnection>
</scm>

或者,使用git协议:

<scm>
   <connection>scm:git:git@github.com:user/project.git</connection>
   <url>scm:git:git@github.com:user/project.git</url>
   <developerConnection>scm:git:git@github.com:user/project.git</developerConnection>
</scm>

4.发布插件

发布流程使用的标准Maven插件是maven-release-plugin-此插件的配置最少:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-release-plugin</artifactId>
   <version>2.4.1</version>
   <configuration>
      <tagNameFormat>v@{project.version}</tagNameFormat>
      <autoVersionSubmodules>true</autoVersionSubmodules>
      <releaseProfiles>releases</releaseProfiles>
   </configuration>
</plugin>

这里重要的是,releaseProfiles配置实际上将强制Maven的轮廓-在释放配置文件-在释放过程变得活跃。

在此过程中,使用nexus-staging-maven-plugin进行部署到nexus-releases Nexus存储库:

<profiles>
   <profile>
      <id>releases</id>
      <build>
         <plugins>
            <plugin>
               <groupId>org.sonatype.plugins</groupId>
               <artifactId>nexus-staging-maven-plugin</artifactId>
               <version>1.4.4</version>
               <executions>
                  <execution>
                     <id>default-deploy</id>
                     <phase>deploy</phase>
                     <goals>
                        <goal>deploy</goal>
                     </goals>
                  </execution>
               </executions>
               <configuration>
                  <serverId>nexus-releases</serverId>
                  <nexusUrl>http://localhost:8081/nexus/</nexusUrl>
                  <skipStaging>true</skipStaging>
               </configuration>
            </plugin>
         </plugins>
      </build>
   </profile>
</profiles>

该插件被配置为在没有部署机制的情况下执行与之前相同的Release流程,用于Deployment流程( skipStaging = true )。

而且与部署过程类似,“ 释放到Nexus”是一项安全的操作 -因此,我们将再次使用Nexus的“开箱即用” 部署用户。

我们还需要在全局settings.xml%USER_HOME%/。m2 / settings.xml )中为nexus-releases服务器配置凭据:

<servers>
   <server>
      <id>nexus-releases</id>
      <username>deployment</username>
      <password>the_pass_for_the_deployment_user</password>
   </server>
</servers>

这是完整的配置

5.发布过程

让我们将发布过程分为几个小步骤和重点突出的步骤。 当项目的当前版本为SNAPSHOT版本(例如0.1-SNAPSHOT)时,我们正在执行发布。

5.1。 释放:干净

清洁发行版将:

  • 删除发布描述符( release.properties
  • 删除所有备份POM文件
5.2。 发布:准备

发布过程的下一部分是准备发布 ; 这将:

  • 执行一些检查–不应有未提交的更改,项目应不依赖于SNAPSHOT依赖项
  • 将pom文件中的项目版本更改为完整发行版号(删除SNAPSHOT后缀)–在我们的示例中– 0.1
  • 运行项目测试套件
  • 提交并推送更改
  • 根据此非SNAPSHOT版本代码创建标签
  • 在pom中增加项目的版本 -在我们的示例中-0.2-SNAPSHOT
  • 提交并推送更改
5.3。 发布:执行

发布过程的后半部分是执行发布 ; 这将:

  • 来自SCM的结帐发布标签
  • 构建和部署发布的代码

该过程的第二步取决于Prepare步骤的输出– release.properties

6.关于詹金斯

Jenkins可以通过以下两种方式之一执行发布过程-它可以使用其自己的发布插件,也可以仅使用标准的maven作业运行正确的发布步骤来执行发布。

专注于发布过程的现有Jenkins插件为:

但是,由于执行发布的Maven命令非常简单,因此我们只需定义一个标准的Jenkins作业即可执行该操作-无需插件。

因此,对于一个新的Jenkins作业(构建一个maven2 / 3项目)–我们将定义2个String参数: releaseVersion = 0.1developmentVersion = 0.2-SNAPSHOT

在“ 构建配置”部分,我们只需配置以下Maven命令即可运行:

release:clean release:prepare release:perform 
   -DreleaseVersion=${releaseVersion} -DdevelopmentVersion=${developmentVersion}

运行参数化作业时,Jenkins将提示用户为这些参数指定值-因此,每次运行作业时,我们都需要为releaseVersiondevelopmentVersion填写正确的值。

另外,值得使用Workspace Cleanup插件并选中此构建的“ 在构建开始之前删除工作区”选项。 但是请记住,发行版的执行步骤必须由与prepare相同的命令运行 步骤–这是因为后面的执行步骤将使用prepare准备创建的release.properties文件。 这意味着我们不能让Jenkins Job运行准备和另一个运行的Perform

7.结论

本文介绍了如何在有或没有Jenkins的情况下发布Maven项目的过程。 与Deployment类似,此过程使用nexus-staging-maven-plugin与Nexus进行交互,并专注于git项目。

参考:我们的JCG合作伙伴 Eugen Paraschiv在baeldung博客上向Nexus发布的Maven

翻译自: https://www.javacodegeeks.com/2013/05/maven-release-to-nexus.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值