背景
- 纯内网环境,无法连互联网
- 待初始化maven私服在内网,无法通过配置代理完成初始化
- 通过nexus部署私服,初始化maven依赖和npm依赖
- 通过nexus管理端上传组件功能上传组件,支持maven组件和npm组件
- 通过maven插件命令行指令上传组件,仅能上传maven组件
- 通过nexus的api接口上传组件,支持maven组件和npm组件
其中前两个思路适用于少量组件需要上传的情况,若需要上传的组件成百上千个,则建议要么想办法打通网络通过网络初始化,要么使用程序循通过api批量上传 。通过 nexus 管理端功能上传组件使用有权限的账户登录 nexus 后在仓库页的左侧菜单里选择【Upload】功能上传组件,无论是maven组件还是npm组件只能上传到 hosted 类型的仓库中 。
1、maven组件可上传的文件有jar、pom
2、npm组件可上传的文件是 tgz 文件
3、这个功能仅支持上传 Release 版本的依赖,nexus3 会根据上传文件的版本判断是否符合要求,比如版本号带有 SNAPSHOT 标识,则认为是快照版,不允许上传
文章插图
文章插图
上传maven依赖
文章插图
1、同时上传 jar 和 pom 文件
分别浏览两个文件,点击 Browse 按钮,分别选择要上传的 jar 和 pom文件,当 pom 文件选择完之后,Component coordinates 区域会自动取消(即此时 nexus 自动从 pom 文件中提取相关内容) 。
2、仅上传 pom 文件
【记一次内网maven私服初始化方法】当需要上传的是类似父模块的时候,这种情况不存在 jar,只有 pom 文件,选中 pom 后,Components coordinates 区域同样会自动取消 。
3、仅上传 jar 文件
当仅上传 jar 文件时,需要填写 Components coordinates 对应的信息,即 Group ID、Artifact ID、Version,这种情况基本遇不到 。
命令行通过 maven 命令上传
1、在 maven 配置文件中配置具有上传权限的用户信息,也可以给匿名用户临时赋管理员权限(这有风险,万一用完后忘了收回呢)在settings.xml中配置用户信息,用户名密码根据实际情况配置
2、确保maven依赖的插件在本地仓库里是存在的,否则命令无法正常执行
<servers><server><id>local-nexus3</id><username>admin</username><password>admin123</password></server></servers>
注意:若需要上传的 jar 、pom 文件在本地仓库里,先将文件从本地仓库复制到其他目录,否则会上传失败1、同时上传 jar 和 pom
mvn -s /path/to/settings.xml deploy:deploy-file -Durl=http://localhost:8080/repository/maven-snapshots -DrepositoryId=local-nexus3 -Dfile=XXX.jar -DpomFile=XXX.pom
-s:指定maven使用的配置文件-Durl:maven 仓库地址,注意仓库类型 Release、Snapshot、Mixed
-Dfile:要上传的jar文件
-DpomFile:与jar文件对应的pom文件
-DrepositoryId:仓库id,给maven工具使用的,主要是用来获取上边 server 里配置的用户信息,这个值要跟 server 里配置的 id 里的值一样
2、仅上传 pom
mvn -s /path/to/settings.xml deploy:deploy-file -Durl=http://localhost:8080/repository/maven-snapshots -DrepositoryId=local-nexus3 -Dfile=XXX.pom -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.0.0-SHAPSHOT -Dpackaging=pom
--Dfile为对应的pom文件3、仅上传 jar
groupId、artifactId、packaging、version的值从pom文件中复制
mvn -s /path/to/settings.xml deploy:deploy-file -Durl=http://localhost:8080/repository/maven-snapshots -DrepositoryId=local-nexus3 -Dfile=XXX.jar -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.0.0 -Dpackaging=jar
若上传失败,可以增加 -e 和 -X 参数,查看输出的日志信息,一般是因为缺少 maven 依赖通过rest api接口上传
api接口文档在:管理员账号登录--》设置--》System--》API,组件相关接口查看Components 里的内容
文章插图
推荐阅读
- 盘点一些小而美的终端命令行工具
- 这可能是Spring Boot Starter 讲的最清楚的一次了
- 一文弄清混合云架构模式
- 送分来了,华为一面,介绍下五种 IO 模型
- 如何正确的使用一条SQL删除重复数据
- 我多想去看看仿写句子一年级?妈妈告诉我仿写句子有哪些一年级?
- 王诗龄|王诗龄说英文引争议!跟网友正面杠被批戾气重情商低家教可见一斑
- 杨振宁|101岁杨振宁现在已经病危,18亿遗产分割,翁帆“一分未得”……
- 有人说这个时代没有诗人了你怎么看 他也许不是这个时代最后一位诗人
- 昕融唱江雪 去融唱诗词