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包相关推荐

  1. R语言tidyr包spread()函数实战详解:数据裂变、从窄表到宽表

    R语言tidyr包spread()函数实战详解:数据裂变.从窄表到宽表 目录 R语言tidyr包spread()函数实战详解:数据裂变.从窄表到宽表

  2. 你真的了解Maven pom.xml 的配置吗?【详解maven pom】

    Maven POM POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖 ...

  3. Maven第3篇:详解maven解决依赖问题

    Maven第3篇:详解maven解决依赖问题 本文主要内容 感受一下maven的效果 maven约定配置 maven中pom文件 maven坐标详解 maven依赖导入功能 maven依赖范围详解 m ...

  4. 第10课:底实战详解使用Java开发Spark程序学习笔记

    第10课:底实战详解使用Java开发Spark程序学习笔记 本期内容: 1. 为什么要使用Java? 2. 使用Java开发Spark实战 3. 使用Java开发Spark的Local和Cluster ...

  5. 第8课:彻底实战详解使用IDE开发Spark程序

    第8课:彻底实战详解使用IDE开发Spark程序 1.下载安装windows下的scala-2.10.4. 2.打开eclipse,新建scala project: WordCount 3.修改依赖的 ...

  6. 第8课:彻底实战详解使用IDE开发Spark程序--集群模式运行

    第8课:彻底实战详解使用IDE开发Spark程序--集群模式运行 拷贝WordCount.scala生成WordCountCluster.scala. 1. 将object WordCount改为ob ...

  7. 《Java和Android开发实战详解》——1.2节Java基础知识

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第1章,第1.2节Java基础知识,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  8. 图文详解远程部署ASP.NET MVC 5项目

    图文详解远程部署ASP.NET MVC 5项目 原文:图文详解远程部署ASP.NET MVC 5项目 话外篇: 由于感觉自己的机器比较慢,配置不好,所以最近想把之前的项目部署到实验室的服务器上,但是由 ...

  9. Android网络开发技术实战详解

    <Android网络开发技术实战详解> 基本信息 作者: 朱桂英 丛书名: Android移动开发技术丛书 出版社:电子工业出版社 ISBN:9787121173493 上架时间:2012 ...

最新文章

  1. Spark在不同集群中的运行架构
  2. AspNetDB.mdf数据库的建立和使用
  3. 隐式反馈的去噪,模型取得巨大提升
  4. 剑指 Offer 03——10
  5. Java反射机制Reflection
  6. 图像处理理论(四)——HOG, Haar, ISP
  7. Linux终端命令(6)--ifconfig,(find -name ‘*.txt‘ | xargs rm -rf)
  8. 安装nrm,报错request@2.88.2: request has been deprecated, see https://github.com/request/request/issu
  9. ABB主计算机作用是什么,一文读懂ABB机器人通信功能
  10. 深度学习8-常用评估函数与自定义评估函数
  11. Eclipse离线集成svn插件
  12. 数字水印技术的原理、实现及其应用
  13. 施努卡:密封环ccd检测(密封圈视觉检测的原理 )
  14. RS232_RS422_RS485简介
  15. matlab plotyy legend,一幅图中画两个legend及plotyy标注问题
  16. 计算机的快速启动栏,电脑快速启动栏不见了
  17. 自动感应手部消毒机详细制作方案
  18. 无尽学习者修炼指南 v3.0
  19. 计算机2级题无法打开,计算机2级考题word 一  看了必过
  20. 十二星座图(附星座变化)

热门文章

  1. 关于JS的一些面试题
  2. VTP-------详解
  3. 优麒麟 20.04 LTS Pro 发布 - 以初心,铸匠心
  4. Python 编程1000例(5):拿鸡蛋问题和回文数问题
  5. 攻防世界高手区easytornado过关
  6. 张一鸣的头盔需要库克激活
  7. 实力悍将联想Z5s发布1398元起售,2019超旗舰Z5 Pro GT 855版惊世降临
  8. 能温柔的时候,请别尖锐
  9. 如何在Adobe Illustrator中绘制可爱的蓝色驯鹿
  10. 中国旋转开关行业市场供需与战略研究报告