Maven发布到Nexus

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql随机查询

select * from table as t1 join (select round(rand() * ((select max(id) from table)-(select min(id) from table))(select min(id) from table)) as id) as t2 where t1.id > t2.id order by t1.id limit 1;;转载于:https://www.cnblogs.com/upup2015/p/7782525.htm…

CSS学习笔记11 CSS背景

background-color&#xff1a;背景色 前面我们经常用background-color这个属性来设置元素的背景色&#xff0c;例如下面这条css可将段落的背景色设置为灰色 p {background-color: gray;} 如果想要元素的背景色向外延伸&#xff0c;则只需增加内边距即可 background-color可以为…

linux 文件的目录,Linux文件及目录管理

第七列&#xff1a;文件或目录名。名以 . 开头表示为隐藏文件或隐藏目录2.2 修改文件目录或者权限改变文件所属用户组&#xff1a;chgrpchgrp [-R] 用户组 文件或目录 ...[-R]&#xff1a;递归修改该目录下所有文件和目录&#xff1b;改变文件所有者&#xff1a;chownchown [-R…

Hbuilder MUI 下拉选择与时间选择器

一、 Hbuilder 下拉选择 <link rel"stylesheet" href"../../../assets/mui/css/mui.picker.min.css" /><script type"text/javascript" src"../../../assets/mui/js/mui.picker.min.js"></script> //引用mui.picker…

套接字(linux相关)

前言&#xff1a;略 一、前因 一切从tcp、udp开始。 众所周知&#xff0c;网络模型一般有两种模型&#xff0c;一种为OSI概念模型&#xff08;七层&#xff09;&#xff0c;另一种为TCP/IP网络模型&#xff08;四层&#xff09;。 TCP/IP应用层对应OSI的应用层、显示层、会话层…

Maven的春天

1.概述 本教程将讨论如何使用Maven设置Spring&#xff0c;并介绍使用Spring依赖项的特定用例。 最新的Spring版本可以在Maven Central上找到。 2.基本的Maven Spring依赖关系 Spring被设计为模块化和灵活的-基本的Spring容器可用于各种场景&#xff0c;而无需包含框架必须提供…

linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...

1.说出 10 个 linux 常用的指令1) ls 查看目录中的文件2)cd /home 进入 / home 目录&#xff1b;cd .. 返回上一级目录&#xff1b;cd ../.. 返回上两级目录3)mkdir dir1 创建一个叫做 dir1 的目录4)rmdir dir1 删除一个叫做 dir1 的目录 (只能删除空目录)5)rm -f file1 删除一…

页面缓存之Meta http-equiv属性详解

http-equiv顾名思义&#xff0c;相当于http的文件头作用&#xff0c;它可以向浏览器传回一些有用的信息&#xff0c;以帮助正确和精确地显示网页内容&#xff0c;与之对应的属性值为content&#xff0c;content中的内容其实就是各个参数的变量值。 引用 meat标签的http-equiv…

Mysql存储过程详解

Mysql存储过程&#xff1a;1.1 定义&#xff1a;把复杂的操作&#xff0c;封装一个过程。类似于函数。 优点&#xff1a; 1、复杂操作&#xff0c;调用简单。 2、速度快。 缺点&#xff1a; 1、封装复杂。 2、没有灵活性。1.2 查看所有存储过…

E20171106-hm

pulldown adj. 折叠式的; pulldown menu 下拉菜单转载于:https://www.cnblogs.com/lancgg/p/8281683.html

Java PDF库

最近&#xff0c;我有一项任务是选择一些Java PDF库用于PDF生成。 但这不是一个简单的任务。 我想到的第一件事是iText。 众所周知Java库具有良好的声誉。 但是...有一些塞子。 iText 5版是在AGPL许可下发布的。 即&#xff0c;如果我们想在商业产品中使用iText&#xff0c;则必…

linux系统md5sum命令用不了,Linux中md5sum命令起什么作用呢?

摘要:下文讲述Linux中md5sum命令的功能说明&#xff0c;如下所示&#xff1b;md5sum命令功能:用于为一个文件生成其内容的MD5值&#xff0c;此命令的原理是对文件的内容进行校验,生成文件内容的MD5值此方式常用于检测文件是否被篡改(因为内容修改后&#xff0c;其MD5值会发生变…

前端工程师必备的几个实用网站

一、配色类网站 http://colorhunt.co 这个网站给我们提供了很多的配色方案&#xff0c;我们直接使用就OK了。使用方法也很简单&#xff0c;鼠标移动到对应的颜色上&#xff0c;我们就可以看到颜色的十六进制码&#xff0c;复制这个颜色到工具里就可以使用了。 https://webgra…

BZOJ1004 [HNOI2008]Cards 【burnside定理 + 01背包】

题目链接 BZOJ1004 题解 burnside定理 在\(m\)个置换下本质不同的染色方案数&#xff0c;等于每种置换下不变的方案数的平均数 记\(L\)为本质不同的染色方案数&#xff0c;\(m\)为置换数&#xff0c;\(f(i)\)为置换\(i\)下不变的方案数&#xff0c;那么\[L \frac{1}{m}\sum\li…

函数接口– Java 8中java.util.function包中的函数接口

我以前写过有关功能接口及其用法的文章。 如果您正在探索要成为Java 8一部分的API&#xff0c;尤其是那些支持lambda表达式的API&#xff0c;您会发现很少的接口&#xff0c;例如Function&#xff0c;Supplier&#xff0c;Consumer&#xff0c;Predicate和其他接口&#xff0c;…

Gcc静态编译出错

编译命令&#xff1a;gcc -static -o test test.c 出错信息&#xff1a;/usr/bin/ld: cannot find -lccollect2: error: ld returned 1 exit status 原因&解决方法&#xff1a;静态链接需要静态库&#xff0c;系统没有安装静态库导致报错。yum install glibc-static.x86_64…

css之浮动

首先说下什么是浮动&#xff08;float&#xff09;&#xff1a;浮动的框可以向左向右移动&#xff0c;直到他的外边缘碰到包含框或者另一个浮动框为止。 浮动在css样式里面是很重要的&#xff0c;我们一起来看看浮动的特点&#xff1a; 1.脱离标准文档流&#xff08;简称脱标&…

linux 修改jmeter内存溢出,jmeter本机内存溢出如何修改?

websocket连接过程中内存溢出&#xff0c;本机配置的内存最大和最小设置的512&#xff1b;一、后台返回二、结果树返回&#xff1a;Thread Name: 线程组 1-9Sample Start: 2017-09-11 13:59:49 CSTLoad time: 9006Connect Time: 0Latency: 0Size in bytes: 0Sent bytes:0Header…

Monkey写脚本

今天学习使用monkey测试一个应用的登陆&#xff0c;遇到些问题记录下&#xff1a; 先上代码&#xff1a; typeraw events count 1 speed 1.0 start data >>LauncheActivity(com.android.smartmirror,com.android.smartmirror.activities.MainActivity)UserWait(500) //…

JSF:在传统组件和时尚性能杀手之间进行选择

这篇博客文章起源于一个大型Web应用程序中的性能问题。 每个人都优化Java代码&#xff0c;但似乎没有人尝试优化JavaScript代码。 奇怪&#xff0c;因为在客户端有很多改进的空间。 我会说&#xff0c;甚至比服务器端还要多。 我们将分析可编辑的JSF标准组件&#xff08;有时称…