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插件为:

  • 发布插件
  • M2发布插件

但是,由于执行发布的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

Maven发布到Nexus相关推荐

  1. maven小节,Nexus私服,构件打包发布,动态资源过滤,自动部署到本地或远程服务器...

    为什么80%的码农都做不了架构师?>>>    阅读此文的前提,对Maven 有一定了解,熟悉pom文件基础 1:Nexus 建立私服 去下载nexus的war包格式的,最新版本的要 ...

  2. Maven发布jar包到Nexus私库

    Nexus2可以通过管理界面来上传jar包到私库中,而最新的Nexus3却找不到了上传界面,只能通过以下方式来发布到私库. 发布第三方jar包 这种情况是maven远程仓库没有,本地有的第三方jar包 ...

  3. maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository. ...

  4. 【Maven学习】Nexus OSS私服仓库的备份与迁移

    背景 在上一篇博客 [Maven学习]Nexus OSS私服仓库的安装和配置 中,我们已经在机房搭建好了新的Nexus OSS私服仓库.下面是两个版本的Nexus OSS私服仓库的对比图. 老的Nex ...

  5. Maven部署到Nexus

    1.概述 在上一篇文章中 ,我讨论了Maven项目如何在本地安装尚未部署在Maven Central(或任何其他大型且公共托管的存储库)上的第三方jar. 该解决方案仅适用于小型项目,在这些项目中安装 ...

  6. android 上传nexus_android发布到nexus私服

    为了减少编译时间,将项目中用到的library module做成maven类库,使之可以被其他项目引用 创建自己的组建项目android的发布至私服的项目最好是有app宿主和一个XxxLib2个mod ...

  7. maven私服搭建nexus

    maven私服 正式开发,不同的项目组开发不同的工程.dao工程开发完毕,发布到私服.service从私服下载dao. 公司在自己的局域网内搭建自己的远程仓库服务器,称为私服,私服服务器即是公司内部的 ...

  8. maven使用,Nexus配置阿里云代理仓库,三方仓库,本地仓库

    如何使用maven私服上传项目和下载项目 Nexus默认远程仓库为https://repo1.maven.org/maven2/,慢死,还常连不上. 添加阿里云代理仓库 # url http://ma ...

  9. Maven私服创建--Nexus

    目录 一.概述 1.Nexus介绍 2.Nexus安装 3.Nexus功能 3.1.Browse 3.2.Administrator 3.3.更多功能查看文档 4.Nexus配置Maven私服 5.添 ...

最新文章

  1. linux查询关键词上下行_【已解决】Linux下通过关键字模糊查找搜索文件
  2. 简明 XHTML 1.0 参考手册
  3. 用户可计算型出题程序
  4. MySQL 索引分析除了 EXPLAIN 还有什么方法?
  5. android 开发art,Android应用开发之Android 系统启动原理(art 虚拟机)
  6. oracle 24756,关于ORA-24756: transaction does not exist的问题
  7. 图论 —— 网络流 —— 费用流 —— 基于 Dijkstra 的费用流
  8. 华为ipop使用教程_华为ipop下载|
  9. 二进制方式搭建极简kubernetes1.10环境@centos7.3
  10. mysql postgresql nav_Mysql/postgreSQL
  11. JDK下载与安装教程
  12. Matlab语言(一)
  13. Winform UI界面设计例程——ListView控件
  14. c语言封皮,C语言程序设计封皮.doc
  15. 中俄巡护员聚东北虎栖息地切磋巡护技艺
  16. PHP开发的一个搞笑段子手生成小程序
  17. 如何解决外边距重叠问题
  18. POST /product/:id 获取单个商品
  19. 极客时间_week03_work
  20. Android Studio(AS)连接mumu模拟器的方法

热门文章

  1. java 单例 生命周期_单例模式--- 声明周期托管方式
  2. jdbc java_Java中使用JDBC
  3. linux安装mysql遇到的问题_Linux下安装MySQL5.7及遇到的问题解决方法
  4. 为什么哲学是最难的学科_什么是哲学哲学对大师来说可能非常理论化,没有一定哲学基础肯能很难 爱问知识人...
  5. k8s往secret里导入证书_K8S之Secret
  6. 8.1-CPU结构(学习笔记)
  7. kafka消费者接收分区测试
  8. solid设计原则_SOLID设计原则
  9. junit5和junit4_JUnit 5符合AssertJ
  10. yeoman_具有Spring Boot和Yeoman的单页Angularjs应用程序