当前位置:网站首页>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
边栏推荐
- ThreadLocal
- 一文看懂:数据指标体系的4大类型
- 2020 "Lenovo Cup" National College programming online Invitational Competition and the third Shanghai University of technology programming competition (a sign in, B sign in, C sign in, D thinking +mst
- Cell: Tsinghua Chenggong group revealed an odor of skin flora. Volatiles promote flavivirus to infect the host and attract mosquitoes
- Understand one article: four types of data index system
- TCP拥塞控制详解 | 2. 背景
- Fuyuan medicine is listed on the Shanghai Stock Exchange: the market value is 10.5 billion, and Hu Baifan is worth more than 4billion
- Use of openpose
- 【Leetcode】14. Longest Common Prefix
- The macrogenome microbiome knowledge you want is all here (2022.7)
猜你喜欢
博客主题 “Text“ 夏日清新特别版
OpenPose的使用
Geoserver: publishing PostGIS data sources
[cloud native] briefly talk about the understanding of flume, a massive data collection component
Day 18 of leetcode dynamic planning introduction
【Leetcode】13. 罗马数字转整数
剑指 Offer 27. 二叉树的镜像
体验居家办公完成项目有感 | 社区征文
Fuyuan medicine is listed on the Shanghai Stock Exchange: the market value is 10.5 billion, and Hu Baifan is worth more than 4billion
剑指 Offer 26. 树的子结构
随机推荐
Configure ARP table entry restrictions and port security based on the interface (restrict users' private access to fool switches or illegal host access)
A case study of college entrance examination prediction based on multivariate time series
C语言自定义函数的方法
Geoserver: publishing PostGIS data sources
pwm呼吸燈
博客主题 “Text“ 夏日清新特别版
2322. 从树中删除边的最小分数(异或和&模拟)
R及RStudio下载安装教程(超详细)
Jiuxian's IPO was terminated: Sequoia and Dongfang Fuhai were shareholders who had planned to raise 1billion yuan
2、 Expansion of mock platform
寒门再出贵子:江西穷县考出了省状元,做对了什么?
PhD Debate-11 预告 | 回顾与展望神经网络的后门攻击与防御
Detailed explanation of @accessories annotation of Lombok plug-in
Easy language ABCD sort
2322. Remove the minimum fraction of edges from the tree (XOR and & Simulation)
Usage of sprintf() function in C language
Serial port controls steering gear rotation
剑指 Offer 27. 二叉树的镜像
uboot的作用和功能
Leetcode1380: lucky numbers in matrix