Maven 公有仓库 -Nexus3
- 工作中,可能须要封装一些通用的工具类库
- 然而公司代码较为敏感,个别不能凋谢到公共仓库中
- 此时能够应用 Nexus3 搭建公司外部应用的公有仓库
- 视频版:BiliBili
Demo 步骤
- 应用 docker 创立 Nexus3 服务
-
创立我的项目并推送仓库
- 批改我的项目 pom.xml 文件配置
- 批改 Maven 软件配置
- 应用 ”mvn deploy” 命令,推送到到仓库
-
创立我的项目并援用上一步的我的项目
- 批改 Maven 软件配置
- 重启 IDE
- 应用 ”mvn install” 命令,装置依赖
1. 应用 docker 创立 nexus3 服务
-
应用 docker 创立 nexus3 容器
- 拜访:http://127.0.0.1:8081
- 较吃资源,启动速度较慢,显示无法访问页面就多等一会儿 (电脑渣的可能要个三五分钟,比方我的)
docker run -d -p 8081:8081 --name nexus sonatype/nexus3
-
获取 nexus3 明码
-
点击页面右上角的 ”Sign in”,按弹窗提醒找到默认明码
- 默认账号:admin
- 默认明码:容器内的 “/nexus-data/admin.password”
- 会提醒重置明码,改个记得住的明码(或者用默认明码),前面配置须要用到
-
- 如下图,复制 ”maven-releases”/”maven-snapshots” 仓库地址
-
nexus-public 是一个仓库分组,默认蕴含以下仓库
- maven-releases:本地 release 库
- maven-snapshots:本地 snapshots 库
- maven-central:代理地方 maven 库,能够改成国内代理,如阿里云 (https://maven.aliyun.com/repository/public)
2. 创立我的项目并推送仓库
批改我的项目 pom.xml 文件配置
-
间接革新 Maven 我的项目(或者新建一个 Maven 我的项目)
- 执行 ”mvn package” 能打包出 jar 的我的项目就行
-
如下在 pom.xml 增加 nexus3 地址信息
- 与 dependencies/build 同级
<dependencies>... 略 </dependencies>
<build>... 略 </build>
<distributionManagement>
<repository>
<id>maven-releases</id>
<name>maven-releases</name>
<url>${这里填写从 nexus 页面上复制的 maven-releases 的 url}</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>maven-snapshots</name>
<url>${这里填写从 nexus 页面上复制的 maven-snapshots 的 url}</url>
</snapshotRepository>
</distributionManagement>
-
推送包
- 执行 “mvn deoloy”
- 此时报错 “…status: 401 Unauthorized”,阐明我的项目配置正确
批改 Maven 软件配置
-
关上 ${maven 根目录}/conf/settings.xml
- 减少 nexus 账号密码
- id 要和在我的项目 pom.xml 中配置的统一
<servers>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>${明码}</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>${明码}</password>
</server>
</servers>
-
再次执行 ”mvn deploy” 就不会报错了
-
刷新 nexus 页面上能够看到上传的包
- 我的项目版本不带 ”-SNAPSHOT” 在 ”maven-releases” 目录
- 否则在 ”maven-releases” 目录
-
3. 创立我的项目并援用上一步的我的项目代码
批改 Maven 软件配置
-
关上 ${maven 根目录}/conf/settings.xml
- 启用镜像,如果有其余镜像能够正文掉
- 重启 IDE,pom.xml 中像线上的库一样增加 dependency 即可应用
<mirror>
<id>nexus-public</id>
<mirrorOf>*</mirrorOf>
<name> 公有仓库 </name>
<url>${这里填写从 nexus 页面上复制的 maven-public 的 url}</url>
</mirror>
参考资料
- docker 部署 Nexus
- maven 配置 nexus 私服