maven 部署nexus_Maven部署到Nexus

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

maven 部署nexus

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

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

相关文章

mongodb mysql json数据_使用MongoDB与MySQL有很多JSON字段?

所以&#xff0c;直接回答问题…Shall we chose mongodb if half of data is schemaless, and is being stored as JSON if using MySQL?无数存储空间肯定是MongoDB的一个引人注目的理由&#xff0c;但正如您所指出的&#xff0c;将JSON存储在RDBMS中也是相当容易的。 MongoDB…

Java命令行界面(第15部分):Jargo

Jargo在其GitHub主页上定义为“一种减轻程序参数/选项处理的工具”。 当已经存在许多其他命令行处理库时&#xff0c;该页面为另一个命令行处理库提供了基本原理 &#xff0c;该列表的顶部是“因为类型安全性&#xff0c;不变性和可读性很重要”。 Jargo的选项“定义”阶段使用…

mysql 过滤相同数据库_MySQL数据库查询中的重复记录过滤

今天帮别人修改程序&#xff0c;需要分组去最大值。也就是所谓&#xff0c;某一字段有重复字&#xff0c;过滤掉有重复的数据。弄了半天&#xff0c;最后总结一下。首先搞点模拟数据出来create table t2 (id int primary key,gid char,col1 int,col2 int) enginemyisam;insert …

python关于文件的编程题_《Python编程》源代码文件

压缩包 : bbc59749e0028c3f1ab3a1c9a762a6d.rar 列表《Python编程》源代码文件/.gitignore《Python编程》源代码文件/appendix_a/README.md《Python编程》源代码文件/appendix_b/hello_world.py《Python编程》源代码文件/appendix_b/Python3.sublime-build《Python编程》源代码…

java中序列化与反序列化_Java中的序列化

java中序列化与反序列化Java提供了一种称为序列化的机制&#xff0c;以按字节的有序或字节序列的形式持久化Java对象&#xff0c;其中包括对象的数据以及有关对象的类型和存储在对象中的数据类型的信息。 因此&#xff0c;如果我们已序列化了任何对象&#xff0c;则可以使用对象…

Java命令行界面(第3部分):jbock

在本系列中有关使用Java进行命令行分析的前两篇文章中&#xff0c;我介绍了Apache Commons CLI和args4j库。 在本系列的第三篇文章中&#xff0c;我将介绍jbock &#xff0c;它是自我描述的“非常简单的CLI解析器”。 我在Java中进行命令行解析的文章使用了一些示例&#xff0…

java 关闭串口_java – 打开和关闭串行端口

我正在尝试连接到Serial Port …但是一旦我第一次打开串行端口.我不能再打开它,我试着申请.这是我的代码&#xff1a;public static void main(String[] args) {portList CommPortIdentifier.getPortIdentifiers();while (portList.hasMoreElements()) {portId (CommPortIden…

java collection详解_java 7 collection 详解(一)

一、综述java集合框架定义了几个接口&#xff0c;这些接口决定了collection类的基本特性。不同的是&#xff0c;具体类仅仅是提供了标准接口的不同实现&#xff0c;如图&#xff0c;java集合框架接口图从图可知&#xff0c;java集合类的主要是由两个接口派生而出——Collection…

java导出pdf 含图片_java 生成PDF含图片和中文件实现代码

1,所需包 iText.jar iTextAsian.ar(支持中包)2,列子package com.pdf;import java.awt.Color;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.net.MalformedURLException;import javax.naming.spi.DirectoryManager;import com.l…

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

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

java耗时操作阻塞_spring boot高并发下耗时操作的实现方法

高并发下的耗时操作高并发下&#xff0c;就是请求在一个时间点比较多时&#xff0c;很多写的请求打过来时&#xff0c;你的服务器承受很大的压力&#xff0c;当你的一个请求处理时间长时&#xff0c;这些请求将会把你的服务器线程耗尽&#xff0c;即你的主线程池里的线程将不会…

如何在Java中转义JSON字符串-Eclipse IDE技巧

在Java应用程序中工作或进行JSON解析时&#xff0c;通常很常见的做法是从某些资源&#xff08;例如RESTful Web服务&#xff09;中复制粘贴JSON字符串&#xff0c;然后使用Jackson库解析JSON。 这是测试和学习Java中解析JSON字符串的最快方法&#xff0c;但是这种方法的主要问题…

java hashmap实例_java HashMap详解及实例代码

java hashmap/** map集合的特点* 将键映射值的对象&#xff0c;一个映射不能包含重复的值&#xff1b;每个键最多只能映射到一个值** map集合和collection集合的区别&#xff1f;* map集合存储元素是成对出现的&#xff0c;map集合的键是唯一的&#xff0c;就是可重复的。可以把…

spring javafx_带有Spring的JavaFX 2

spring javafx我将从一个大胆的声明开始&#xff1a;我一直很喜欢Java Swing或applet。 在那里&#xff0c;我说了。 如果我进行一些自我分析&#xff0c;那么这种钦佩可能是在我接触Java时开始的。 Swing&#xff08;实际上&#xff09;是我使用Java所做的第一件事&#xff0c…

jframe和mysql登陆_刚写的一个从数据库读取账户和密码进行登陆的小程序~高手请无~...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.*; import javax.swing.*;public class LoginSystem extends JFrame{publi…

使用WebCrypto API的电子签名

有时我们需要让用户进行电子签名。 通常&#xff0c;人们会理解为将您的手写签名以某种方式放在屏幕上。 根据管辖范围&#xff0c;可能很好&#xff0c;或者仅存储图像可能还不够。 例如&#xff0c;在欧洲&#xff0c;有910/2014号法规 &#xff0c;该法规定义了什么是电子签…

mycat mysql 物理部署_一、MyCat的搭建

一、什么是mycat简单直接点就是&#xff0c;MyCat其实就是一个数据库的中间件&#xff01;一般我们都是app直接到数据库&#xff01;有了MyCat以后&#xff0c;就是app到MyCat然后再访问数据库。mycat是个中间件&#xff0c;它负责连接管理mysql,应用程序连接mycat,把mycat当作…

java 记事本换行_[求助]记事本自动换行

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我编的一个记事本 自动换行该如何实现import java.io.*;import java.awt.*;import java.awt.event.*;import java.awt.print.*;public class Jishiben extends Frame implements ActionListener{FileDialog fileDlg;String str, f…

JAVA中的适配器应用_Java适配器模式应用之电源适配器功能详解

本文实例讲述了Java适配器模式应用之电源适配器功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;一、模式定义存在两种适配器模式1 对象适配器模式&#xff0c;在这种适配器模式中&#xff0c;适配器容纳一个它包裹的类对象的物理实体。2 类适配器模式&#xff0c;…

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

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