Maven私服部署与JAR文件本地安装

Nexus3 是一个仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。

平常我们在获取 maven 仓库资源的时候,都是从 maven 的官方(或者国内的镜像)获取。团队的多人员同样的依赖都要从远程获取一遍,从网络方面来说,这是非常耗时的。这时候就需要在局域网内部署一个 Nexus3 用来管理 Maven(apt、yum、gradle、pypi、docker 等等)仓库。

有些公司都不提供外网给项目组人员,因此就不能使用 maven 访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建 Nexus3 私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了 Nexus3 私服的电脑访问 maven 的远程仓库。

一、私服NEXUS安装部署

1.1 官网下载

下载地址: https://www.sonatype.com/products/repository-oss-download


1.2 安装部署

bash 复制代码
scp Downloads/nexus-3.65.0-02-unix.tar.gz root@10.211.55.38:~
scp Downloads/jdk-8u391-linux-aarch64.tar.gz root@10.211.55.38:~
tar -zxvf nexus-3.65.0-02-unix.tar.gz -C /opt/
tar -zxvf jdk-8u391-linux-aarch64.tar.gz -C /opt/

vim ~/.bash_profile
# 内容BEGIN
export PATH=$PATH:'/opt/nexus-3.65.0-02/bin'
export JAVA_HOME='/opt/jdk1.8.0_391'
PATH=$PATH:$JAVA_HOME/bin
# 内容END

source ~/.bash_profile
bash 复制代码
[root@nexus ~]# nexus 
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
Usage: /opt/nexus-3.65.0-02/bin/nexus {start|stop|run|run-redirect|status|restart|force-reload}

提示

bash 复制代码
Detected execution as "root" user.  This is NOT recommended!

解决

bash 复制代码
# https://www.cnblogs.com/fzhu/articles/15248776.html
vim /opt/nexus-3.65.0-02/bin/nexus.rc
# 1.加入run_as_user=root
# 2.或者加入系统变量export RUN_AS_USER=root
# 3.vim nexus; 成run_as_root=false 
vim /opt/nexus-3.65.0-02/bin/nexus
# 4.或者添加nexus用户(非必要),即:
useradd nexus
chown -R nexus:nexus /opt/nexus
然后 su nexus 执行:./nexus start 就成功了。

关闭防火墙

bash 复制代码
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

访问: http:10.211.55.38:8001

bash 复制代码
cat /opt/sonatype-work/nexus3/admin.password
9ed814d8-f1ad-4a07-b57f-85fe79eb9918


点击Next进行修改密码,输入新密码进行修改,这里我改成admin123

Nexus 有 3 个类型的数据仓库,分别是 hosted,proxy,group

hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件以及自己或第三方的项目构件;

proxy 代理仓库:代理公共的远程仓库;

group 仓库组:Nexus 通过仓库组统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。

Nexus 预定义了 2 个本地仓库,分别是 maven-releases, maven-snapshots

  • maven-releases: 这里存放我们自己项目中发布的构建,通常是 Release 版本的也就是正式版。
  • maven-snapshots: 这个仓库非常的有用,它的目的是让我们可以发布那些非 release 版本,非稳定版本,也就是快照版。

手动上传本地 jar 包,例 ojdbc6-11.2.0.4.jar(当然你可以任选 jar 包上传)

这样一个jar包就上传成功了。

如果你的工程中,使用的 jar 包,在私服中没有,他就会自动连接远程仓库进行下载,这不是我们希望的结果,我们希望它去阿里 maven 库去下载,这样下载速度会更快。

我们需要创建一个代理仓库,代理阿里Maven仓库

阿里仓库地址: https://developer.aliyun.com/mvn/guide

点击保存,然后选择maven-public

完成!

maven配置 conf/settings.xml

上传

xml 复制代码
<servers>
  <!-- 发布版 -->
  <server>
    <id>releases</id>
    <username>admin</username>
    <password>admin123</password>
  </server>
  <!-- 快照版 -->
  <server>
    <id>snapshots</id>
    <username>admin</username>
    <password>admin123</password>
  </server>
</servers>

下载

xml 复制代码
<mirrors>
  <mirror>
    <id>nexus</id>
    <mirrorOf>*</mirrorOf>
    <name>nexus maven</name>
    <url>http://10.211.55.38:8081/repository/maven-public/</url>
  </mirror>
</mirrors>

项目配置

xml 复制代码
<distributionManagement>
	<repository>
		<id>releases</id>
		<name>maven-releases</name>
		<url>http://10.211.55.38:8081/repository/maven-releases/</url>
		<uniqueVersion>true</uniqueVersion>
	</repository>
	<snapshotRepository>
		<id>snapshots</id>
		<name>maven-snapshots</name>
		<url>http://10.211.55.38:8081/repository/maven-snapshots/</url>
		<uniqueVersion>true</uniqueVersion>
	</snapshotRepository>
</distributionManagement>

只要执行命令 mvn deploy即可。

这里配置了两个仓库,一个正式版、一个快照版,maven 是如何区分你要发布到哪一个仓库呢?

如果你的版本带着 releases,也就是 0.0.1-releases,就会发布到 maven-releases。

如果你的版本带着 snapshots,也就是 0.0.1-snapshots,就会发布到 maven-snapshots。

装依赖到私服快照仓

bash 复制代码
mvn deploy:deploy-file
-DgroupId=com.oracle.database.jdbc
-DartifactId=ojdbc6
-Dversion=11.2.0.4
-Dpackaging=jar
-Dfile=~/Downloads/ojdbc6-11.2.0.4.jar
-Durl=http://10.211.55.38:8081/repository/maven-snapshots/
-DrepositoryId=snapshots

二、安装依赖到本地

bash 复制代码
mvn install:install-file
-DgroupId=com.oracle.database.jdbc
-DartifactId=ojdbc6
-Dversion=11.2.0.4
-Dpackaging=jar
-Dfile=~/Downloads/ojdbc6-11.2.0.4.jar

详细笔记后续更新...

相关推荐
( •̀∀•́ )9201 分钟前
Spring Boot 启动流程详解
java·spring boot·后端
小金的学习笔记17 分钟前
Java开发利器:IDEA的安装与使用(上)
java·开发语言·intellij-idea
paterWang27 分钟前
小程序-基于java+SpringBoot+Vue的音乐播放器小程序设计与实现
java·spring boot·小程序
Lemon_man_1 小时前
算法——反转字符串中的单词(leetcode151)
java·linux·前端
Herbig1 小时前
手写电子签名并保存到当前项目下
java
fa_lsyk1 小时前
SpringMVC:SpringMVC的bean加载机制
java·spring·servlet·mvc
Str_Null1 小时前
Seatunnel解决ftp读取json文件无法读取数组以及格式化之后的json无法解析的问题
java·json·seatunnel
2301_780853861 小时前
Java进阶
java·开发语言·python
jupiter_8881 小时前
Java NIO channel
java·服务器·nio
shinelord明1 小时前
【再谈设计模式】桥接模式 ~ 抽象与实现的灵活桥梁
java·开发语言