Nexus3 Maven 私服搭建及各种使用
详见**Maven私服搭建及各种使用汇总2020**
Maven 配置 Nexus 私服
-
在 Maven 项目中配置 Nexus 私服,需要在项目的
pom.xml
或 maven 的settings.xml
文件中添加 Nexus 仓库的配置。 -
示例:
-
以下是一个项目的
pom.xml
文件的配置示例:xml<project> <!-- ... 其他配置 ... --> <repositories> <repository> <id>my-nexus-repo</id> <url>http://my-nexus-server/repository/maven-public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>my-nexus-repo</id> <url>http://my-nexus-server/repository/maven-public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> <!-- ... 其他配置 ... --> </project>
在 Maven 的
settings.xml
文件中,还需要配置服务器和认证信息xml<settings> <!-- ... 其他配置 ... --> <servers> <server> <id>my-nexus-repo</id> <username>my-username</username> <password>my-password</password> </server> </servers> <!-- ... 其他配置 ... --> </settings>
-
以下是一个在 Maven 的
settings.xml
中配置 Nexus 服务器和认证信息(这会影响所有项目)的配置示例:xml<settings> ... <servers> <server> <id>my-nexus</id> <username>my-username</username> <password>my-password</password> </server> </servers> <mirrors> <mirror> <id>my-nexus</id> <mirrorOf>*</mirrorOf> <url>http://my-nexus-server/repository/maven-public/</url> </mirror> </mirrors> ... </settings>
-
注:
- 将
my-nexus-server
替换为实际部署的私服 Nexus 服务器地址,my-username
和my-password
替换为实际部署的私服 Nexus 账户信息。 - 这样配置后,Maven 将会使用 Nexus 作为仓库来下载依赖。如果在
pom.xml
中配置了仓库,那么只有这个项目会使用 Nexus 仓库;如果在settings.xml
中配置了,那么所有 Maven 项目都会使用 Nexus 作为默认仓库。
- 将
-
Nexus3 批量上传 jar 包、pom文件
Nexus 创建私服仓库
Nexus 私服仓库配置检查
- 建立私服仓库的配置界面
Maven 2
--Layout policy
下的Validate that all paths are maven artifact or metadata paths
配置项需指定为Permissive
,否则使用脚本批量上传依赖接口会失败(返回400 Invalid path for a Maven 2 repository
无效路径)
本地仓库批量放入 jar
- 本地新建仓库根目录 repo
- 本地仓库批量放入所需的依赖(jar 包、pom文件等)多级文件夹
编写 shell 脚本
-
shell 脚本文件:mvnimport.sh
sh#!/bin/bash # 批量上传nexus-maven依赖 # 使用方法:将本脚本文件放于本地maven仓库根目录,然后使用git-bash执行命令: # sh mvnimport.sh -u 私服账号 -p 私服密码 -r 私服仓库地址 while getopts ":r:u:p:" opt; do case $opt in r) REPO_URL="$OPTARG" ;; u) USERNAME="$OPTARG" ;; p) PASSWORD="$OPTARG" ;; esac done find . -type f \ -not -path './mavenimport\.sh*' \ -not -path '*/\.*' \ -not -path '*/\^archetype\-catalog\.xml*' \ -not -path '*/\^maven\-metadata\-local*\.xml' \ -not -path '*/\^maven\-metadata\-deployment*\.xml' \ | sed "s|^\./||" \ | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
执行脚本
-
将脚本文件放于本地 maven 仓库根目录,然后使用 git-bash 执行命令:
shsh mvnimport.sh -u 私服账号 -p 私服密码 -r 私服仓库地址
示例:
shsh mvnimport.sh -u admin -p 123456 -r http://127.0.0.1:8081/repository/my_releases
检查
- 执行后效果
- Nexus管理端显示已上传