Maven部署到Nexus

1.概述

在上一篇文章中 ,我讨论了Maven项目如何在本地安装尚未部署在Maven Central(或任何其他大型且公共托管的存储库)上的第三方jar。 该解决方案仅适用于小型项目,在这些项目中安装,运行和维护完整的Nexus服务器可能会显得过大。 但是,随着项目的发展,Nexus很快成为托管第三方工件以及跨开发流重用内部工件的唯一真正成熟的选择。 本文将展示如何使用Maven将项目工件部署到Nexus

2. pom中的Nexus要求

为了使Maven能够部署在构建的打包阶段中创建的工件,它需要通过distributionManagement元素定义存储库信息,将在其中部署打包的工件

<distributionManagement><snapshotRepository><id>nexus-snapshots</id><url>http://localhost:8081/nexus/content/repositories/snapshots</url></snapshotRepository>
</distributionManagement>

托管的公共Snapshots存储库在Nexus上是开箱即用的,因此无需进一步创建或配置任何内容。 Nexus使确定其托管存储库的URL变得容易-每个存储库在“ 摘要”标签下的项目pom的<distributionManagement>中显示要添加的确切条目。

3.插件

默认情况下,Maven通过maven-deploy-plugin处理部署机制-该映射到默认Maven生命周期的部署阶段:

<plugin><artifactId>maven-deploy-plugin</artifactId><version>2.7</version><executions><execution><id>default-deploy</id><phase>deploy</phase><goals><goal>deploy</goal></goals></execution></executions>
</plugin>

maven-deploy-plugin是解决将项目部署到Nexus的任务的可行选择,但是它并不是为了充分利用Nexus提供的功能而构建的。 因此,Sonatype构建了一个Nexus专用插件-nexus-staging-maven-plugin ,该插件实际上旨在充分利用Nexus必须提供的更高级的功能-分期等功能。

尽管对于简单的部署过程,我们不需要暂存功能,但我们将继续使用此自定义Nexus插件,因为该插件的创建明确目的是与Nexus良好地沟通。 使用maven-deploy-plugin的唯一原因是在将来保持打开使用Nexus替代产品的选项,例如Artifactory存储库。 但是,与在项目的整个生命周期中可能实际更改的其他组件不同,Maven存储库管理器极不可能更改,因此不需要灵活性。 因此,在部署阶段使用另一个部署插件的第一步是禁用现有的默认映射:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>${maven-deploy-plugin.version}</version><configuration><skip>true</skip></configuration>
</plugin>

现在,我们可以定义:

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

插件的部署目标映射到Maven构建的部署阶段。 还要注意, 如前所述,在将-SNAPSHOT工件简单部署到Nexus时,我们不需要分段功能,因此可以通过<skipStaging>元素将其完全禁用。

4.全局

部署到Nexus是一项安全的操作 -为此,在任何Nexus实例上都存在开箱即用的部署用户。 无法使用该部署用户的凭据来配置Maven,以便它可以与Nexus正确交互,这不能在项目的pom.xml中完成。 这是因为pom的语法不允许这样做,更不用说pom可能是公共工件的事实,因此不太适合保存凭证信息。

服务器的凭证必须在全局Maven setting.xml中定义:

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

还可以鼓励服务器使用基于密钥的安全性,而不是原始和纯文本凭据。

5.部署过程

执行部署过程很简单:

mvn clean deploy -Dmaven.test.skip=true

在部署作业的环境中,跳过测试是可以的,因为该作业应该是该项目的部署基准线中的最后一个作业。 这种部署管道的一个常见示例是一连串的Jenkins作业,每个作业只有在成功完成后才触发下一个作业。 因此,管道中的先前作业有责任运行项目中的所有测试套件-到部署作业运行时,所有测试都应该已经通过。

如果只运行一个命令,则可以在部署阶段执行之前使测试保持活动状态以运行:

mvn clean deploy

六,结论

这是将Maven工件部署到Nexus的简单但高效的解决方案。 它也有些怪异-使用nexus-staging-maven-plugin代替默认的maven-deploy-plugin ; 分阶段功能被禁用等–正是这些选择使解决方案变得简单实用。 潜在地激活完整的登台功能可能是将来文章的主题。 最后,我们将在下一篇文章中讨论发布过程。

参考:来自badung博客的JCG合作伙伴 Eugen Paraschiv的Maven Deploy to Nexus 。

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

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

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

相关文章

后处理效果栈

Unity官方的Github实现&#xff1a;Post Processing Stack Post-processing is the process of applying full-screen filters and effects to a camera’s image buffer before it is displayed to screen. It can drastically improve the visuals of your product with litt…

【Java IO流】浅谈io,bio,nio,aio

本文转载自&#xff1a;http://www.cnblogs.com/doit8791/p/4951591.html1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。 阻塞和非阻塞是针对于进程在访问数据的时候&#xff0c;根据IO操作的就绪状态来采取的不同方式&#xff0c;说白了是一种读…

linux 安装tcl命令,TCL/TK Linux下安装 | 勤奋的小青蛙

原创文章&#xff0c;转载请注明&#xff1a; 转载自勤奋的小青蛙本文链接地址: TCL/TK Linux下安装在Linux下安装TCL/TK&#xff0c;可以有编译源代码的方式安装&#xff0c;也可以有直接通过二进制压缩包进行解压缩安装&#xff0c;本文采用比较快捷的方式&#xff0c;用二进…

安全性中的Spring AOP –通过方面控制UI组件的创建

以下文章将显示在我参与的一个项目中&#xff0c;我们如何使用Spring的AOP来介绍一些与安全性相关的功能。 这样的概念是为了使用户能够看到一些UI组件&#xff0c;他需要具有一定级别的安全特权。 如果不满足该要求&#xff0c;则不会显示UIComponent。 让我们看一下项目结构&…

模拟生物自然进化的基因遗传算法

基因遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;是一种通过模拟生物进化过程来寻找最优解的优化算法。它是一种常见的启发式搜索算法&#xff0c;常用于优化、搜索和机器学习等领域。 生物基因遗传 生物的基因遗传是指父母通过基因传递给子代的过程。基因…

折半查找算法及分析(手工过程)

折半查找的手工过程&#xff1a; 1.我需要查找的数是10&#xff1b; 给定&#xff1a;1 5 8 10 13 14 17 22 25 27 29 31 35 37 40 42 45 47 50 51 58 下标&#xff1a;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1…

Bootstrap下拉菜单

前面的话 网页交互的时候经常会需要上下文菜单或者隐藏/显示菜单项&#xff0c;Bootstrap默认提供了用于显示链接列表的可切换、有上下文的菜单。而且在各种交互状态下的菜单展示需要和javascript插件配合才能使用。本文将详细介绍Bootstrap下拉菜单 使用方法 在使用Bootstrap框…

linux进程socket通信,linux进程间通信--socket套接字 实例代码

可以实现通信的代码实现&#xff0c;拿去用&#xff01;原文来自&#xff1a;http://blog.chinaunix.net/uid-26790551-id-3171897.html服务器端&#xff1a;#include #include #include #include #include #include #define UNIX_DOMAIN "/tmp/UNIX.domain"int main…

Maven发布到Nexus

1.概述 在本系列的上一篇文章中&#xff0c;我们将Maven设置为Nexus的部署过程 。 在本文中&#xff0c;我们将在项目的pom以及Jenkins作业中使用Maven配置发布过程 。 2. 为了使Maven能够发布到Nexus Repository Server&#xff0c;我们需要通过distributionManagement元素定…

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;则必…