一.搭建
下载压缩包,解压到指定的目录
在浏览器上输入http://ip:8081/(nexus默认的端口号是8081),进入nexus,sign in登录,默认的用户名是admin,密码在admin.password中
二.几种仓库
hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第三方库。
proxy:代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
group:仓库组,用来合并多个hosted/proxy仓库。
初始化nexus的时候默认会创建这三个仓库,并且将hosted和proxy仓库归到group中:
三.配置setting.xml
<server>
<id>public</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>releases</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>123456</password>
</server>
<mirror>
<id>public</id>
<name>maven-public</name>
<url>http://localhost:8081/repository/maven-public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<profile>
<id>public</id>
<repositories>
<repository>
<id>public</id>
<name>maven-public</name>
<url>http://localhost:8081/repository/maven-public/</url>
<layout>default</layout>
<!--<snapshots>-->
<!--<enabled>false</enabled>-->
<!--</snapshots>-->
<snapshots>
<enabled>true</enabled>
<checksumPolicy>ignore</checksumPolicy>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>maven-public</name>
<url>http://localhost:8081/repository/maven-public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<activeProfiles>
<activeProfile>public</activeProfile>
</activeProfiles>
四.配置pom.xml
<distributionManagement>
<repository>
<id>releases</id><!--这个ID需要与你的release仓库的Repository ID一致-->
<name>maven-releases</name>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>maven-snapshots</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
四.上传jar到nexus
可以传pom也可以传jar
批量上传脚本:
#!/bin/bash
# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line params
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}/{} ;
./mavenimport.sh -u admin -p admin123 -r http://localhost:8081/repository/maven-public/
将本地项目打包上传到nexus:
<distributionManagement>
<repository>
<id>releases</id><!--这个ID需要与你的release仓库的Repository ID一致-->
<name>maven-releases</name>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>maven-snapshots</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
mvn deploy -Dmaven.test.skip=true -e