Maven私服的安装和使用。
(注:原创文章,引用请注明来自Clement-Xu的博客!)
Maven私服(即Repository Manager)的主要做用:
- 减小从远方仓库下载的次数,节省带宽、提升maven build的效率
- 减小对远方仓库的依赖,确保maven build的稳定性
- 方便内部人员发布artifact
- 方便存放官方仓库中没有的第三方依赖包
安装和启动:
二、下载nexus:
wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.0.2-02-unix.tar.gz
三、解压:
tar -zxvf nexus-3.0.2-02-unix.tar.gz
四、建立用户、赋予权限:
# 使用root权限建立一个用户
adduser nexus
# 给nexus用户添加sudo权限
一、给root写的权限
chmod u+w /etc/sudoers
二、编辑/etc/sudoers,在root下添加nexus用户权限
vi /etc/sudoers
添加:nexus ALL=(ALL) ALL
三、保存后撤回写的权限
chmod u-w /etc/sudoers
修改目录全部者:
chown -R nexus nexus-3.0.2-02
chgrp -R nexus nexus-3.0.2-02
五、注册为服务:
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"
六、启动服务:
service nexus start
service nexus status
查看运行的log:
tail -f /opt/app/nexus/data/log/nexus.log
看到“Started Sonatype Nexus OSS 3.0.2-02”表示已经启动成功。
七、访问:
Sign In,缺省帐号密码:admin/admin123
注:仓库的不一样类型:
- proxy:代理第三方仓库的
- hosted:存储本地上传的组建和资源
- group:通常包含多个proxy仓库和hosted仓库,在项目中通常引入这种类型的仓库就能够下载到proxy和hosted中的包
项目中使用:
pom.xml中添加:
- <repositories>
- <repository>
- <id>nexus</id>
- <name>Nexus Repository</name>
- <url>http://<ip>:8081/repository/maven-public/</url>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>nexus</id>
- <name>Nexus Plugin Repository</name>
- <url>http://<ip>:8081/repository/maven-public/</url>
- </pluginRepository>
- </pluginRepositories>
上传第三方包:
准备工做:
一、须要先配置maven中的setting.xml文件:
- <server>
- <id>nexus-releases</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
- <server>
- <id>nexus-snapshots</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
二、建立一个新的repository专门用于存放第三方的jar包:
- admin登陆nexus,Repositories -> Create repository -> maven2 (hosted)
- 填入name:maven-3rd
- 选择Blob store:default
- 选择Deployment policy:Allow redeploy
- 点击:Create repository
三、把新建立的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://<ip>:8081/repository/maven-3rd/ ^
-DrepositoryId=nexus-releases
注:若是是在linux下运行,须要把链接符“^”替换为“\”
验证结果:在Nexus Search中搜索是否已经上传成功。
上传成功后,修改pom.xml中的dependency,指向私服:
<dependency>
<groupId>com.aliyun.api</groupId>
<artifactId>taobao-sdk-java-auto_1455552377940</artifactId>
<version>2016.03.01</version>
</dependency>
Deploy jar项目到私服中:
一、pom.xml中的配置:
- <distributionManagement>
- <repository>
- <id>nexus-releases</id>
- <name>Nexus Release Repository</name>
- <url>http://<ip>:8081/repository/maven-releases/</url>
- </repository>
- <snapshotRepository>
- <id>nexus-snapshots</id>
- <name>Nexus Snapshot Repository</name>
- <url>http://<ip>:8081/repository/maven-snapshots/</url>
- </snapshotRepository>
- </distributionManagement>
注意:
- ID名称必需要与settings.xml中Servers配置的ID名称保持一致。
- 项目版本号中有SNAPSHOT标识的,会发布到Nexus Snapshots Repository, 不然发布到Nexus Release Repository,并根据ID去匹配受权帐号。
二、生成jar包并上传:
> mvn deploy