当前位置:网站首页>Nexus简介及小白使用IDEA打包上传到Nexus3私服详细教程
Nexus简介及小白使用IDEA打包上传到Nexus3私服详细教程
2022-07-02 14:42:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
使用IDEA打包上传到Nexus3私服
一、Nexus是什么
开始在使用Maven时,总是会听到nexus这个词,一会儿maven,一会儿nexus,为什么它总是和maven一起被提到呢?
Maven作为一个优秀的构建工具、依赖管理工具、项目信息管理工具,在进行依赖管理的时候,通过pom.xml里面的
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>来精准定位找到对应的Java类库。在这个过程当中我们需要从仓库去找到对应的jar包引入到我们的项目当中,由此我们解决了合作开发中依赖增多、版本不一致、版本冲突、依赖臃肿等问题。
Maven有本地仓库和远程仓库两种,当Maven根据坐标寻找构件时,它首先会查看本地仓库,如果本地仓库存在此构件,则直接使用;如果本地仓库不存在此构件,或者需要查看是否有更新的构件版本,Maven会去远程仓库查找,发现需要的构件之后,下载到本地仓库再使用。
说到此,相信大家也明白了,Nexus是一种远程仓库,也是私服的一种。
SNAPSHOT快照版本,在 maven 中 SNAPSHOT 版本代表正式发布(release)的版本之前的开发版本,在 pom 中用 x.y-SNAPSHOT 表示。
RELEASE发布版本,稳定版本,在 maven 中 RELEASE 代表着稳定的版本,unchange,不可改变的,在 maven 中 SNAPSHOT 与 RELEASE 版本在策略上是完全不同的方式,SNAPSHOT 会根据你的配置不同,频繁的从远程仓库更新到本地仓库;而 RELEASE 则只会在第一次下载到本地仓库,以后则会先直接从本地仓库中寻找。
二、使用Nexus3搭建maven私服
在网上找到几个参考: Windows中使用Nexus3搭建maven私服maven 私服 nexus3.x 搭建 与使用Maven私服Nexus3.x环境构建操作记录
三、IDEA打包上传到Nexus3私服
1.配置 .m2 下的 settings.xml
首先,这个文件在系统盘当前设备登录用户的.m2文件下,加入认证机制
没有就去网上copy一个配置好的,自己配置容易出错
->settings.xml<-
<servers>
<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>rdc-releases</id>
<username>xxxxxxxxx</username>
<password>xxxxx</password>
</server>
<server>
<id>rdc-snapshots</id>
<username>xxxxxxxxx</username>
<password>xxxx</password>
</server>
</servers>1.配置 IDEA 项目 下的 pom.xml
<distributionManagement>
<repository>
<id>nexus</id>
<name>nexus</name>
<url>http://xxxx:port/repository/maven-snapshots/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>maven-snapshots</name>
<url>http://xxxx:port/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>这里标签中的id对应第一条server中的id ,url取得值可以直接在这里写,也可以如下图中settings文件中的值,name可以自定义 ->settings.xml<-
<profile>
<altReleaseDeploymentRepository> http://xxxx:port/repository/maven-snapshots/ </altReleaseDeploymentRepository>
<altSnapshotDeploymentRepository> http://xxxx:port/repository/maven-snapshots/</altSnapshotDeploymentRepository>
</profile>同样,上面pom.xml改成如下格式
<distributionManagement>
<repository>
<id>nexus</id>
<name>nexus</name>
<url>${altReleaseDeploymentRepository}</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>maven-snapshots</name>
<url>${altSnapshotDeploymentRepository}</url>
</snapshotRepository>
</distributionManagement>3.配置上传地址,地址去私服中copy
<profile>
<!--profile 的 id-->
<id>dev</id>
<repositories>
<repository>
<!--仓库 id,repositories 可以配置多个仓库,保证 id 不重复-->
<id>nexus</id>
<!--仓库地址,即 nexus 仓库组的地址-->
<url>http://localhost:8081/nexus/content/groups/public/</url>
<!--是否下载 releases 构件-->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载 snapshots 构件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库,maven 的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository>
<!-- 插件仓库的 id 不允许重复,如果重复后边配置会覆盖前边 -->
<id>central</id>
<name>Nexus Plugin Repository</name>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>4.其他配置(可忽略)
比如配置阿里的镜像,映射阿里中央仓库(下载jar包快一点)
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>配置本地仓库(无需联网使用jar包)
<localRepository>E:\maven_repository</localRepository>5.settings.xml完整配置(来源网络,仅供参考)
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库地址 -->
<localRepository>D:\mvn_repo\repository</localRepository>
<!-- 以下配置为上传jar包配置 -->
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
<server>
<!-- id,对应项目里面pom.xml里面distributionManagement配置的id -->
<id>maven-releases</id>
<!-- 登录nexus的用户名 -->
<username>admin</username>
<!-- 登录nexus的密码 -->
<password>admin123</password>
</server>
<server>
<!-- id,对应项目里面pom.xml里面distributionManagement配置的id -->
<id>maven-snapshots</id>
<!-- 登录nexus的用户名 -->
<username>admin</username>
<!-- 登录nexus的密码 -->
<password>admin123</password>
</server>
<!-- 配置拦截器mirror登录的用户名密码。他会拦截所有的请求到mirror指定的地址下载jar包 如果只需要去私服下载jar包则只需配置此项 -->
<server>
<!-- id,对应mirror中id -->
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<!-- 以下配置为下载jar包配置 通用 -->
<mirrors>
<!-- 强制让jar包下载走私服 -->
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.65.129:8081/repository/maven-public/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<!-- 对应activeProfiles-activeProfile的内容 -->
<id>nexus</id>
<!-- 仓库地址 -->
<repositories>
<repository>
<!-- 私服id,覆盖maven-model模块下的父id,让maven不走中央仓库下载,走私服下载 -->
<id>central</id>
<!-- 名字 -->
<name>Nexus</name>
<!-- 私服地址,写central后,会去mirror里面找 -->
<url>http://central</url>
<!-- 支持releases版本 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 支持snapshots版本 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!-- 插件地址 -->
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Nexus Plugin Repository</name>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<!-- 配置全局的url地址 供上传jar包时动态获取 -->
<properties>
<ReleaseRepository>http://192.168.65.129:8081/repository/maven-releases/</ReleaseRepository>
<SnapshotRepository>http://192.168.65.129:8081/repository/maven-snapshots/</SnapshotRepository>
</properties>
</profile>
</profiles>
<!-- 选择使用的profile -->
<activeProfiles>
<activeProfile>nexus</activeProfile>
<!-- <activeProfile>rdc</activeProfile>-->
</activeProfiles>
</settings>6.IDEA打包上传
使用idea打包,打包时会根据pom文件中version判断是快照版本还是发布版本,version中0.0.1-SNAPSHOT 带SNAPSHOT为快照版本,删掉SNAPSHOT为发布版本,上传到私服时根据version自动判断上传到哪个仓库
注意,打包时 项目的pom文件一定要把maven-plugin删除掉,不然打包完成后会生成BOOT-INF文件夹,会造成上传到私服后,配置依赖后能下载到jar包,但是使用时报包找不到错误
<version>1.1-SNAPSHOT</version>
<build>
</build>然后clean后deploy
看到BUILD SUCCESS的提示则为成功,可以在自己私服上查看
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148092.html原文链接:https://javaforall.cn
边栏推荐
- 入行数字IC验证后会做些什么?
- Ap和F107数据来源及处理
- [leetcode] 14. Préfixe public le plus long
- Tech talk activity preview | building intelligent visual products based on Amazon kVs
- 宝宝巴士创业板IPO被终止:曾拟募资18亿 唐光宇控制47%股权
- Believe in yourself and finish the JVM interview this time
- 关于举办科技期刊青年编辑沙龙——新时代青年编辑应具备的能力及提升策略的通知...
- 剑指 Offer 22. 链表中倒数第k个节点
- 【Leetcode】14. 最长公共前缀
- Deep learning image data automatic annotation [easy to understand]
猜你喜欢

剑指 Offer 22. 链表中倒数第k个节点

Understand one article: four types of data index system

The poor family once again gave birth to a noble son: Jiangxi poor county got the provincial number one, what did you do right?

Does digicert SSL certificate support Chinese domain name application?

The macrogenome microbiome knowledge you want is all here (2022.7)

配置基于接口的ARP表项限制和端口安全(限制用户私自接入傻瓜交换机或非法主机接入)

ThreadLocal

基于多元时间序列对高考预测分析案例

DGraph: 大规模动态图数据集

七张图,学会做有价值的经营分析
随机推荐
深度学习图像数据自动标注[通俗易懂]
Amazon cloud technology community builder application window opens
数字IC手撕代码--投票表决器
The impact of telecommuting on all aspects of our experience | community essay solicitation
Method of C language self defining function
PWM breathing lamp
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
Lampe respiratoire PWM
Connect Porsche and 3PL EDI cases
vscode设置删除行快捷键[通俗易懂]
基于多元时间序列对高考预测分析案例
社交元宇宙平台Soul冲刺港股:年营收12.8亿 腾讯是股东
宝宝巴士创业板IPO被终止:曾拟募资18亿 唐光宇控制47%股权
畅玩集团冲刺港股:年营收2.89亿 刘辉有53.46%投票权
Flutter: 动作反馈
VMware安装win10镜像
超卓航科上市:募资9亿市值超60亿 成襄阳首家科创板企业
Blog theme "text" summer fresh Special Edition
871. 最低加油次数
System Verilog实现优先级仲裁器