停止jar包_在内网搭建nexus私服,配置多镜像以及导入存量jar包

网络环境

  • 内网Linux服务器。不能访问外网

  • 开发机器。可以访问内网Linux服务器和外网。

需求

  1. 在内网Linux服务器(192.168.0.100)上搭建nexus私服。

  2. 批量导入公司内部的全部jar包到nexus。

  3. 开发机器可以发布jar到nexus。

  4. 开发机器可以从nexus下载jar,如果nexus没有jar就去外网下载。

分析

对于需求1、2、3来说,No Problem!难点就在需求4,因为nexus所在机器无法访问外网。一般来说,我们使用私服打包的流程如下图所示:

7da1b39725bf46975085ae8def2ea199.png

步骤描述:

  1. 开发者在本地对项目进行打包:mvn package

  2. 如果本地仓库没有依赖的jar包,就会去公司仓库(nexus私服)下载。

  3. 如果nexus也没有对应的jar包,nexus就会去公网下载并缓存到nexus私服。

一般nexus私服都会给开个外网,最起码给开一个可以访问中央仓库的外网,但是我们这边的网络环境不是这样,我们的nexus无法访问外网,所以我们打包的时候流程如下:

e86318bb13303281a6d20a7ef873f1d8.png

缺点:nexus无法缓存从外网下载的那些jar包,每个开发者都会去外网下载,nexus仅仅只有开发者deploy上去的那些jar包。

安装

以上都是理论分析,下面是具体实现步骤,nexus官网下载地址:https://www.sonatype.com/download-oss-sonatype
官网很难下载成功,可以在我的百度网盘下载,只不过不是最新版的:https://pan.baidu.com/s/1MGS5o59eFoHFAWeavCXIug,密码:riiu

# 解压tar -zxvf nexus-3.21.1-01-unix.tar.gz

解压后会出现两个文件夹nexus-3.21.1-01sonatype-work

常用命令

# 临时启动(可以看到日志,按ctrl+c可关闭,建议第一次这样启动)./nexus-3.21.1-01/bin/nexus run# 后台启动./nexus-3.21.1-01/bin/nexus start# 重启./nexus-3.21.1-01/bin/nexus restart# 查看状态./nexus-3.21.1-01/bin/nexus status# 停止./nexus-3.21.1-01/bin/nexus stop# 其他命令Usage: nexus {start|stop|run|run-redirect|status|restart|force-reload}

几个注意事项:

  • 启动过程相当的漫长,需要多点耐心,第一次启动建议使用./bin/nexus run可以看到启动日志,能知道到底有没有完成启动。

  • 注意开放防火墙端口8081。

  • 默认端口是8081,如果想修改,可以在nexus-3.21.1-01/etc/nexus-default.properties中修改。

  • 尽量不要使用root用户启动(官方建议),可以新建一个nexus用户。

使用nexus用户启动

# 创建用户nexususeradd nexus
# 修改nexus目录权限chown -R nexus:nexus nexus-3.21.1-01chown -R nexus:nexus sonatype-work/
# 指定启动用户 nexus-3.21.1-01/bin/nexus.rcrun_as_user="nexus"

启动时不用切到nexus用户,使用root指定 ./bin/nexus start即可。

允许匿名访问

第一次访问http://192.168.0.100:8081/的时候,密码是存放在sonatype-work/admin.password中的,当我们登录后会被要求修改密码,假设密码修改为admin123。
紧接着会让我们选择是否允许匿名访问,这里要选中是,如果选错了,可以在管理界面修改:

ae8100f6182458c4a2f10bcdbfc719b7.png

从maven-public中移除maven-central

为什么移除?因为nexus无法访问公网,与其苦苦挣扎不如默默移除。

b940ae7aa9d6e3bdc9a3565242efeb20.png

开发者配置

以上是nexus私服相关的配置,下面是开发者的配置,包括settings.xml和pom.xml。

settings.xml

配置servers:

<servers> <server> <id>releasesid> <username>adminusername> <password>admin123password> server> <server> <id>snapshotsid> <username>adminusername> <password>admin123password> server>servers>

配置mirrors:

<mirrors> <mirror> <id>nexuscid> <mirrorOf>*mirrorOf> <name>Nexusname> <url>http://192.168.0.100:8081/repository/maven-public/url> mirror> <mirror> <id>alimavenid> <name>aliyun mavenname> <url>http://maven.aliyun.com/nexus/content/groups/public/url> <mirrorOf>centralmirrorOf> mirror> <mirror> <id>maven centerid> <name>center mavenname> <url>https://repo1.maven.org/maven2/url> <mirrorOf>centralmirrorOf> mirror>mirrors>

经测试,如果镜像中没有对应的jar包,会从上往下依次访问镜像。

配置profiles:

<profiles> <profile> <id>jdk-1.8id> <activation> <activeByDefault>trueactiveByDefault> <jdk>1.8jdk> activation> <repositories> <repository> <id>nexusid> <name>local private nexusname> <url>http://192.168.0.100:8081/repository/maven-public/url> <releases> <enabled>trueenabled> <updatePolicy>alwaysupdatePolicy> releases> <snapshots> <enabled>trueenabled> <updatePolicy>alwaysupdatePolicy> snapshots> repository> repositories> <pluginRepositories> <pluginRepository> <id>nexusid> <name>local private nexusname> <url>http://192.168.0.100:8081/repository/maven-public/url> <releases> <enabled>trueenabled> <updatePolicy>alwaysupdatePolicy> releases> <snapshots> <enabled>trueenabled> <updatePolicy>alwaysupdatePolicy> snapshots> pluginRepository> pluginRepositories> profile>profiles>

pom.xml

如果你的jar包不被别的项目依赖,也就是说你不需要deploy的情况下是可以不配置pom.xml的

<project><distributionManagement><repository><id>releasesid><name>Releasesname><url>http://192.168.0.100:8081/repository/maven-releases/url>repository><snapshotRepository><id>snapshotsid><name>Snapshotsname><url>http://192.168.0.100:8081/repository/maven-snapshots/url>snapshotRepository>distributionManagement>project>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值