Maven 私服(Repository Manager) - Nexus 安装和使用(详细过程)

Maven 私服的安装和使用。
Maven 私服(即 Repository Manager)的主要作用:
减少从远方仓库下载的次数,节省带宽、提高 maven build 的效率
减少对远方仓库的依赖,确保 maven build 的稳定性
方便内部人员发布 artifact
方便存放官方仓库中没有的第三方依赖包
官网:https://www.sonatype.com
Maven 官网关于 Repository Manager 的介绍:https://maven.apache.org/repository-management.html
安装和启动:
1、安装 JDK:参考:http://blog.csdn.net/clementad/article/details/50261853
2、下载 nexus:
wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.0.2-02-unix.tar.gz

3、解压:
tar -zxvf nexus-3.0.2-02-unix.tar.gz
4、创建用户、赋予权限:

使用 root 权限创建一个用户

adduser nexus

给 nexus 用户添加 sudo 权限

1、给 root 写的权限
chmod u+w /etc/sudoers
2、编辑 /etc/sudoers,在 root 下添加 nexus 用户权限
vi /etc/sudoers
添加:nexus ALL=(ALL) ALL
3、保存后撤回写的权限
chmod u-w /etc/sudoers

修改目录所有者:
chown -R nexus nexus-3.0.2-02
chgrp -R nexus nexus-3.0.2-02

5、注册为服务:
ln -s /opt/app/nexus-3.0.2-02 /opt/app/nexus
ln -s /opt/app/nexus/bin/nexus /etc/init.d/nexus
cd /etc/init.d
chkconfig –add nexus
chkconfig –levels 345 nexus on

vi /opt/app/nexus/bin/nexus.rc
添加:run_as_user=“nexus”

6、启动服务:
service nexus start
service nexus status

查看运行的 log:
tail -f /opt/app/nexus/data/log/nexus.log
看到“Started Sonatype Nexus OSS 3.0.2-02”表示已经启动成功。

7、访问:
http://:8081/
Sign In,缺省账号密码:admin/admin123

注:仓库的不同类型:
proxy:代理第三方仓库的
hosted:存储本地上传的组建和资源
group:一般包含多个 proxy 仓库和 hosted 仓库,在项目中一般引入这种类型的仓库就可以下载到 proxy 和 hosted 中的包

项目中使用:
pom.xml 中添加:
nexus
Nexus Repository
http://:8081/repository/maven-public/
nexus
Nexus Plugin Repository
http://:8081/repository/maven-public/

上传第三方包:
准备工作:
1、需要先配置 maven 中的 setting.xml 文件:
nexus-releases
admin
admin123
nexus-snapshots
admin
admin123

2、创建一个新的 repository 专门用于存放第三方的 jar 包:
admin 登录 nexus,Repositories -> Create repository -> maven2 (hosted)
填入 name:maven-3rd
选择 Blob store:default
选择 Deployment policy:Allow redeploy
点击:Create repository
3、把新创建的 repository 加入 maven-public group 中:
进入 Repositories -> maven-public
在 Group 中,加入 maven-3rd
点击:Save

万事俱备,可以上传了:
(假设第三方 JAR 包:taobao-sdk-java-auto_1455552377940-20160330.jar,存放在本地目录 D:\3rd_jars\ 中)
mvn deploy:deploy-file
-DgroupId=com.aliyun.api

-DartifactId=taobao-sdk-java-auto_1455552377940
-Dversion=2016.03.01

-Dpackaging=jar
-Dfile=D:\3rd_jars\taobao-sdk-java-auto_1455552377940-20160330.jar

-Durl=http://:8081/repository/maven-3rd/ ^
-DrepositoryId=nexus-releases

注:如果是在 linux 下运行,需要把连接符“^”替换为“\”
验证结果:在 Nexus Search 中搜索是否已经上传成功。

上传成功后,修改 pom.xml 中的 dependency,指向私服:
com.aliyun.api
taobao-sdk-java-auto_1455552377940
2016.03.01

Deploy jar 项目到私服中:
1、pom.xml 中的配置:
nexus-releases
Nexus Release Repository
http://:8081/repository/maven-releases/
nexus-snapshots
Nexus Snapshot Repository
http://:8081/repository/maven-snapshots/
注意:
ID 名称必须要与 settings.xml 中 Servers 配置的 ID 名称保持一致。
项目版本号中有 SNAPSHOT 标识的,会发布到 Nexus Snapshots Repository, 否则发布到 Nexus Release Repository,并根据 ID 去匹配授权账号。
2、生成 jar 包并上传:

mvn deploy