本文摘要
Maven作为Java后端使用频率非常高的一款依赖管理工具,在此咱们由浅入深,分三篇文章(Maven基础、Maven进阶、私服搭建)来深入学习Maven,此篇为开篇主要介绍Maven私服搭建-Nexus
文章目录
- 本文摘要
- [1. Nexus安装](#1. Nexus安装)
- [2. Nexus配置](#2. Nexus配置)
- [3. Nexus仓库类型](#3. Nexus仓库类型)
- 4.发布依赖
-
- [4.1 配置仓库用户名密码](#4.1 配置仓库用户名密码)
- [4.2 配置上传仓库地址](#4.2 配置上传仓库地址)
- [4.3 上传依赖](#4.3 上传依赖)
- [4.4 查看Nexus仓库](#4.4 查看Nexus仓库)
- [4.5 下载依赖](#4.5 下载依赖)
-
- [4.5.1 setting.xml(mirror)配置](#4.5.1 setting.xml(mirror)配置)
- [4.5.2 pom.xml(repositories)配置](#4.5.2 pom.xml(repositories)配置)
- [4.5.3 settings.xml(profiles)配置](#4.5.3 settings.xml(profiles)配置)
- [6. 安装三方依赖](#6. 安装三方依赖)
-
- [6.1 安装至本地](#6.1 安装至本地)
- [6.2 上传至私服](#6.2 上传至私服)
1. Nexus安装
使用Docker进行安装
- 拉取镜像
docker pull sonatype/nexus3
- 启动镜像
docker run -d -p 8081:8081 --name nexus -v /some/dir/nexus-data:/nexus-data sonatype/nexus3
2. Nexus配置
config
# Jetty section
# 端口,可以修改
# application-port=8081
# application-host=0.0.0.0
# nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
# nexus-context-path=/${NEXUS_CONTEXT}
# Nexus section
# nexus-edition=nexus-pro-edition
# nexus-features=\
# nexus-pro-feature
# nexus.clustered=false
3. Nexus仓库类型
- hosted:表示用户自己上传的依赖将会上传至该仓库
- proxy:表示代理远程仓库地址
- group:用来组合hosted/proxy仓库,下载依赖将从该仓库下载
4.发布依赖
4.1 配置仓库用户名密码
setting.xml
文件中配置
xml
<!-- 定义稳定版本的id名称,用户名密码 -->
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<!-- 定义开发版本的id名称,用户名密码 -->
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
4.2 配置上传仓库地址
需要上传至径服所在项目
pom.xml
文件中配置
xml
<distributionManagement>
<repository>
<id>releases</id>
<url>http://nas:18081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://nas:18081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
4.3 上传依赖
idea中点击
deploy
4.4 查看Nexus仓库
4.5 下载依赖
4.5.1 setting.xml(mirror)配置
该配置方案存在问题:无法拉取SNAPSHOT依赖
xml
<mirrors>
<mirror>
<!-- 配置id -->
<id>nexus</id>
<!-- 配置拦截仓库,*表示拦截所有仓库拉取请求 -->
<mirrorOf>*</mirrorOf>
<name>nexus</name>
<!-- 配置仓库地址 -->
<url>http://nas:18081/repository/maven-public/</url>
</mirror>
</mirrors>
4.5.2 pom.xml(repositories)配置
该配置方案存在问题:该种方式只能针对某个项目下载依赖
xml
<repositories>
<repository>
<id>nexus</id>
<name>nexus</name>
<url>http://nas:18081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<url>http://nas:18081/repository/maven-public/</url>
<name>pluginRepositories</name>
</pluginRepository>
</pluginRepositories>
4.5.3 settings.xml(profiles)配置
该种配置方式全局配置,可以根据需求选择配置方案,生产中选择该方式
xml
<profiles>
<!-- 下载jar包配置 -->
<profile>
<!--profile的id -->
<id>dev</id>
<repositories>
<repository> <!--仓库id,repositories可以配置多个仓库,保证id不重复 -->
<id>nexus</id> <!--仓库地址,即nexus仓库组的地址 -->
<url>http://nas:18081/repository/maven-public/</url> <!--是否下载releases构件 -->
<releases>
<enabled>true</enabled>
</releases> <!--是否下载snapshots构件 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories> <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository> <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://nas:18081/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- 选择那一个配置 -->
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
6. 安装三方依赖
6.1 安装至本地
bash
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile=fastjson-1.1.37.jar -Dpackaging=jar
6.2 上传至私服
bash
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=fastjson-1.1.37.jar -Durl=http://localhost:8079/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty