Maven私服的安装和使用。

(注:原创文章,引用请注明来自Clement-Xu的博客!)

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://www.voidcn.com/article/p-aexbbtun-gy.html

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://<ip>:8081/

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>


上传第三方包:

准备工作:

1、需要先配置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>

2、创建一个新的repository专门用于存放第三方的jar包:

  1. admin登录nexus,Repositories -> Create repository -> maven2 (hosted)
  2. 填入name:maven-3rd
  3. 选择Blob store:default
  4. 选择Deployment policy:Allow redeploy
  5. 点击:Create repository
3、把新创建的repository加入maven-public group中:

  1. 进入Repositories -> maven-public
  2. 在Group中,加入maven-3rd
  3. 点击: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 aobao-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项目到私服中:

1、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去匹配授权账号。
2、生成jar包并上传:

> mvn deploy