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

maven 部署nexus_Maven部署到Nexus相关推荐

  1. 如何用建木CI一键部署Java构件到Nexus

    介绍 继上一篇博客「开源人的福音」一键部署Java构件到Sonatype发布后,得到了很多小伙伴们的关注,我趁热打铁推出了它的姊妹篇如何用建木CI一键部署Java构件到Nexus,有别于上一篇,此篇博 ...

  2. Eclipse利用Maven的插件部署web项目到远程tomcat服务器

    使用maven的自动部署功能可以很方便的将maven工程自动打包并且部署到远程tomcat服务器,省去一些繁琐的操作,节省大量时间. 我使用的tomcat版本是8.5,tomcat7和tomcat8都 ...

  3. 解放双手 | Jenkins + gitlab + maven 自动打包部署项目

    前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...

  4. 如何在 IntelliJ IDEA 中整合 Maven、Tomcat 部署 Web 应用

    如何在 IntelliJ IDEA 中整合 Maven.Tomcat 部署 Web 应用 笔者的环境: JDK 11.0.12 Maven 3.6.3 Tomcat 9.0.41(Servlet 4. ...

  5. git maven 一键部署_Jenkins Git Maven搭建自动化部署项目环境 邮件通知

    简介 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/j ...

  6. 【Maven篇】---解决Maven线上部署java.lang.ClassNotFoundException和no main manifest attribute解决方法...

    一.前述 maven 线上部署的话会出现一些问题比如java.lang.ClassNotFoundException或者no main manifest attribute的话,是因为maven 配置 ...

  7. maven项目的部署开发

    CSDN对maven项目的部署开发 从配置Maven环境到写出第一个Maven项目_05年的程序员的博客-CSDN博客 1.回顾JDBC项目开发步骤 2.Mybatis框架sql书写位置以及dao层不 ...

  8. Maven(五)使用Nexus搭建Maven私服

    文章装载于:http://blog.csdn.net/jun55xiu/article/details/39497089 Nexus介绍 Nexus是Maven仓库管理器,如果你使用Maven,你可以 ...

  9. Maven学习总结(九)——使用Nexus搭建Maven私服

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(九)--使用Nexus搭建Maven私服 一.搭建nexus私服的目的 为什么要搭建nexus私服,原因很 ...

最新文章

  1. 清晰易懂的Numpy进阶教程
  2. AngularJS快速入门指南15:API
  3. ansys matlab 调用,matlab 调用ansys (转载)
  4. Slimming Down Windows XP The Complete Guide 【 10章完整版 】
  5. 接入上文,StarWind V2V Image Converter:虚拟机镜像转换工具,如何使用转化之后的 VMware VMDK 文件
  6. ruby array_在Ruby中使用Array.delete()和Array.delete_at()从Array中移除元素
  7. wordpress 自定义分类url 重写_WordPress导航主题-WebStack导航主题
  8. JavaScript垃圾回收
  9. linux之同时监控多个日志文件变化
  10. linux删除一个目录下的所有空文件
  11. linux opendir,linux opendir和readdir的使用
  12. 计算机提示应用程序无法启动,电脑应用程序无法正常启动提示0x000007b怎么办?...
  13. 彩色图像处理之色彩学基础
  14. 斗鱼已公开的运维技术和架构分析
  15. 极客日报:《英雄联盟》回应服务器崩了:官方直接回退了旧版本;Deno 1.19 发布|极客头条
  16. 【正点原子MP157连载】第四十三章 外置RTC芯片PCF8563实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
  17. 【数据分析师求职面试指南】实战技能部分
  18. Hadoop原理与技术——hdfs命令行基本操作
  19. 《Linux Kernel Development》读书笔记
  20. 【机房收费系统】 之 收费模式

热门文章

  1. Hadoop入门(二十四)Mapreduce的求TopK程序
  2. 一文搞懂 Java 线程中断
  3. 分布式系统之消息队列
  4. 属于你们的“礼仪小课堂”
  5. Project编写功能点的规划时间
  6. map分组后取前10个_海关数据 | 图解前10个月外贸
  7. 转:权限管理——用户认证和用户授权
  8. java从数组查找指定整数_如何在Java中使用重复项查找整数数组中的K个缺失数字?...
  9. 需求调研 现有系统梳理_对速度的需求,访问现有数据的速度提高了1000倍
  10. 注释嵌套注释_DIY注释