实战详解Maven部署(deploy)jar到私有仓库Nexus及如何引入私仓jar包
1 缘起
本来只打算测试jar包部署(deploy)到私仓,
可是,发现部署后与预期有些不一样,就又查了些资料,
实际验证了一下对应的功能,
比如,部署jar包区分快照版和发行版,
部署时需要使用不同的版本标识,快照版后缀:-SNAPSHOT,发行版后缀:-RELEASE或者纯版本号,
顺便学习了一下各个仓库的概念,见后文,
分享部署jar包到私仓以及如何引入私仓的jar包,
帮助开发者完善相关的私仓知识。
Ubuntu部署Nexus:https://blog.csdn.net/Xin_101/article/details/125906120
2 配置
使用Maven部署jar包到私仓,需要在项目中配置私仓地址,
并且,在本地的Maven中添加私仓的用户名和密码,
这里,需要注意:Maven配置文件的id和项目私仓地址的id保持一致,
部署jar包,区分快照地址和发行版地址,
引用jar包时使用私仓的公共仓库。
2.1 获取仓库地址
序号 | 仓库 | 地址 |
---|---|---|
1 | 快照仓库 | http://192.168.211.129:18081/repository/maven-snapshots/ |
2 | 发行仓库 | http://192.168.211.129:18081/repository/maven-releases/ |
获取仓库日志操作如下图所示:
快照版仓库:snapshots
发行版仓库:releases
2.2 配置项目中的pom.xml
添加属性:distributionManagement,即私仓(Nexus)地址
用于向私有仓库Nexus推送jar包,
其中,
- snapshotRepository:jar包快照版仓库,用于存储快照jar包
- id:自定义的id
- url:用于存储快照版jar包的私仓地址,如上
- repository:jar包发行版仓库
- id:自定义的id
- url:用于存储发行版jar包的私仓地址,如上
这里的id均为自定义的id,需要注意的是:
Maven的配置文件settings.xml中,
配置的servers属性id应与这里的id完全一致。
<distributionManagement><snapshotRepository><id>my-snapshots</id><name>My snapshots</name><url>http://192.168.211.129:18081/repository/maven-snapshots/</url></snapshotRepository><repository><id>my-releases</id><name>My releases</name><url>http://192.168.211.129:18081/repository/maven-releases/</url></repository></distributionManagement>
上面介绍了快照版和发行版的仓库,
因此,使用deploy时,也会按照不同的版本将jar包部署到对应的仓库,
- 部署到快照版仓库:0.0.1-SNAPSHOT
快照版的版本后缀要添加-SNAPSHOT以区分是快照版,deploy时会将jar包发送到快照版仓库。 - 部署到发行版仓库:0.0.1-RELEASE
发行版的版本后缀添加-RELEASE,或者直接是数字,deploy时会自动部署到发行版仓库。
SNAPSHOT完整样例如下,版本为:0.0.1-SNAPSHOT,
如果是发行版,版本修改为:0.0.1-RELEASE,以示区分。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.monkey</groupId><artifactId>template-spring-boot-starter</artifactId><version>0.0.1-SNAPSHOT</version><name>template-spring-boot-starter</name><description>Template project for Spring Boot Starter</description><properties><java.version>1.8</java.version><autoconfigure.version>2.4.5</autoconfigure.version><configuration.processor.version>2.4.5</configuration.processor.version></properties><dependencies><!-- Compile dependencies --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>${autoconfigure.version}</version></dependency><!-- @ConfigurationProperties annotation processing (metadata for IDEs) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>${configuration.processor.version}</version><optional>true</optional></dependency></dependencies><distributionManagement><snapshotRepository><id>my-snapshots</id><name>My snapshots</name><url>http://192.168.211.129:18081/repository/maven-snapshots/</url></snapshotRepository><repository><id>my-releases</id><name>My releases</name><url>http://192.168.211.129:18081/repository/maven-releases/</url></repository></distributionManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
2.3 配置Maven
在配置文件:maven目录/conf/settings.xml添加servers属性,
servers属性中这里可以配置多个私仓id,但需与上传项目pom.xml中配置的id一致,
用户名和密码即私仓Nexus的用户名和密码。
<servers><server><id>my-snapshots</id><username>admin</username><password>123456</password></server><server><id>my-releases</id><username>admin</username><password>123456</password></server></servers>
3 部署
这里使用SpringBoot的starter项目作为测试。
3.1 部署到快照版仓库
将jar包部署到快照仓库,
pom.xml中的版本配置为0.0.1-SNAPSHOT,
标识为快照。
3.2 部署到发行版仓库
将jar包部署到发行版仓库,
pom.xml中的版本配置为0.0.1-RELEASE,
标识为发行版,也可以只用版本号,如0.0.1。
- 成功标识:
4 查看仓库
完成Nexus Repository私有仓库部署,登录私仓后,可以看到多个仓库,
仓库分类如下表所示,
序号 | 仓库 | 描述 |
---|---|---|
1 | maven-central | 中央仓库,默认从https://repo1.maven.org/maven2/拉取软件包,可配置 |
2 | maven-public | 公共仓库,存储发行版和快照版的软件包,即发行版和快照版的软件包都会在public中 |
3 | maven-releases | 发行版仓库,软件包稳定后,发布到该仓库,团队内使用 |
4 | maven-snapshots | 快照版本仓库,用于测试软件,发布到线上 |
4.1 快照版仓库
发布测试jar包到快照版,用于测试功能,即开发环境,
配置的快照版仓库提交策略为可覆盖,即同版本可重复提交,
使用时间戳区分不同的提交,后文:发行版和快照版有什么不同讲解。
进入快照版仓库
快照版jar包
如何删除?
4.2 发行版仓库
发行版仓库即生产环境,已完成测试的jar包,部署到发行版仓库,
供公司内部使用,部署时可以在版本号后添加后缀:-RELEASE作为标识,
当然也可以直接使用版本号,发行版仓库的jar并如下图所示。
4.3 公共仓库
公共版仓库中同时保存快照版和发行版jar包,
这个仓库用于开发者从私仓中拉取需要的jar包,后文讲解如何在项目中集成私仓,拉取jar包。
5 发行版和快照版有什么不同?
快照版使用时间戳作为版本后缀,
为什么呢?
因为快照版的提交策略为Allow redploy,允许相同版本号多次上传,
为了区分不同的版本,使用时间戳作为后缀。
快照版同一个版本的多次提交:
6 引入私仓jar包
引入私仓jar包,需要在项目中配置私仓的公共仓库地址,
以及对应包的Maven坐标。
6.1 获取jar包Maven坐标
首先从私仓的公共仓库maven-public中获取对用jar包的Maven坐标,
获取方式如下图所示。
6.2 项目配置私仓地址
在项目中添加私有仓库的地址,
通过repositories属性,与dependencies属性同级。
再引入对应的jar包Maven坐标,
配置样例如下:
<repositories><repository><id>my-public</id><url>http://192.168.211.129:18081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots></repository></repositories><dependencies><dependency><groupId>com.monkey</groupId><artifactId>template-spring-boot-starter</artifactId><version>0.0.1-RELEASE</version></dependency></dependencies>
更新maven,依赖中出现对应的包:com.monkey:template-spring-boot-starter:0.0.1-RELEASE,
如下图所示。
7 Q&A
部署jar包无授权:401
status: 401 Unauthorized
- 原因
没有在Maven配置文件中(conf/settings.xml)中配置私仓的用户名和密码。 - 方案
在Maven配置文件中(conf/settings.xml)中配置私仓的用户名和密码,
其中,Maven配置文件的id与项目pom.xml的distributionManagement属性对应仓库的id一致。
<servers><server><id>my-snapshots</id><username>admin</username><password>123456</password></server><server><id>my-releases</id><username>admin</username><password>123456</password></server></servers>
8 小结
核心:
(1)发布jar包有两种仓库选择:快照版和发行版;
(2)快照版多为测试阶段的版本,上传时添加-SNAPSHOT标识,自动将包上传到快照版仓库;
(3)发行版正式功能的版本,完成测试,上传时为区别于快照版本,添加-RELEASE后缀,如果只是版本数字号也可以;
(4)无论是上传到快照版仓库还是发行版仓库,公共仓库:maven-public都会保留这两者的jar包,供开发者选择;
(5)发行版和快照版的groupId和artifactId相同,唯一区别是版本号,其中,快照版的版本号使用时间戳作为后缀标识,因为快照版是测试阶段,选择覆盖策略的话,使用时间戳标识不同的测试版;
(6)项目引入私仓的jar包,需要在pom.xml中配置私仓地址(快捷的方式),然后引入对应的jar包即可。
实战详解Maven部署(deploy)jar到私有仓库Nexus及如何引入私仓jar包相关推荐
- R语言tidyr包spread()函数实战详解:数据裂变、从窄表到宽表
R语言tidyr包spread()函数实战详解:数据裂变.从窄表到宽表 目录 R语言tidyr包spread()函数实战详解:数据裂变.从窄表到宽表
- 你真的了解Maven pom.xml 的配置吗?【详解maven pom】
Maven POM POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖 ...
- Maven第3篇:详解maven解决依赖问题
Maven第3篇:详解maven解决依赖问题 本文主要内容 感受一下maven的效果 maven约定配置 maven中pom文件 maven坐标详解 maven依赖导入功能 maven依赖范围详解 m ...
- 第10课:底实战详解使用Java开发Spark程序学习笔记
第10课:底实战详解使用Java开发Spark程序学习笔记 本期内容: 1. 为什么要使用Java? 2. 使用Java开发Spark实战 3. 使用Java开发Spark的Local和Cluster ...
- 第8课:彻底实战详解使用IDE开发Spark程序
第8课:彻底实战详解使用IDE开发Spark程序 1.下载安装windows下的scala-2.10.4. 2.打开eclipse,新建scala project: WordCount 3.修改依赖的 ...
- 第8课:彻底实战详解使用IDE开发Spark程序--集群模式运行
第8课:彻底实战详解使用IDE开发Spark程序--集群模式运行 拷贝WordCount.scala生成WordCountCluster.scala. 1. 将object WordCount改为ob ...
- 《Java和Android开发实战详解》——1.2节Java基础知识
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第1章,第1.2节Java基础知识,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 图文详解远程部署ASP.NET MVC 5项目
图文详解远程部署ASP.NET MVC 5项目 原文:图文详解远程部署ASP.NET MVC 5项目 话外篇: 由于感觉自己的机器比较慢,配置不好,所以最近想把之前的项目部署到实验室的服务器上,但是由 ...
- Android网络开发技术实战详解
<Android网络开发技术实战详解> 基本信息 作者: 朱桂英 丛书名: Android移动开发技术丛书 出版社:电子工业出版社 ISBN:9787121173493 上架时间:2012 ...
最新文章
- Spark在不同集群中的运行架构
- AspNetDB.mdf数据库的建立和使用
- 隐式反馈的去噪,模型取得巨大提升
- 剑指 Offer 03——10
- Java反射机制Reflection
- 图像处理理论(四)——HOG, Haar, ISP
- Linux终端命令(6)--ifconfig,(find -name ‘*.txt‘ | xargs rm -rf)
- 安装nrm,报错request@2.88.2: request has been deprecated, see https://github.com/request/request/issu
- ABB主计算机作用是什么,一文读懂ABB机器人通信功能
- 深度学习8-常用评估函数与自定义评估函数
- Eclipse离线集成svn插件
- 数字水印技术的原理、实现及其应用
- 施努卡:密封环ccd检测(密封圈视觉检测的原理 )
- RS232_RS422_RS485简介
- matlab plotyy legend,一幅图中画两个legend及plotyy标注问题
- 计算机的快速启动栏,电脑快速启动栏不见了
- 自动感应手部消毒机详细制作方案
- 无尽学习者修炼指南 v3.0
- 计算机2级题无法打开,计算机2级考题word 一 看了必过
- 十二星座图(附星座变化)