目录
1、在maven的settings.xml配置文件中配置私服的镜像文件
一、Nexus
1.1 Nexus介绍
Nexus 是 Maven 仓库管理器, 通过 nexus 可以搭建 maven 仓库,同时 nexus 还提供强大的仓库管理功能,构件搜索功能等。
1.2 nexus安装
解压nexus-2.12.0-01-bundle.zip文件(这里自己搜索一下下载安装,我用的是2.12.0版本),存放到一个不含中文的目录下。
查看conf文件下的nexus.properties配置文件,可以修改对应的配置
1.3 nexus相关使用
nexus的安装命令:使用管理员运行cmd命令窗口,切换目录nexus\nexus-2.12.0-01\bin目录下,执行nexus.bat install进行安装。执行nexus.bat start 启动服务 执行nexus.bat stop停止服务
nexus的卸载命令:使用管理员运行cmd命令窗口,切换目录nexus\nexus-2.12.0-01\bin目录下,执行nexus.bat uninstall进行卸载
访问图形化界面:打开浏览器,输入http://localhost:端口号/nexus访问(需要启动nexus服务才能访问到)
登录:点击log in,进行登录,用户名:admin 密码:admin123
1.4 nexus仓库类型
hosted:宿主仓库, 部署自己的 jar 到这个类型的仓库,包括 releases 和 snapshot 两部分, Releases 公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库
proxy:代理仓库, 用于代理远程的公共仓库,如 maven 中央仓库,用户连接私服,私服自动去中央仓库下载 jar 包或者插件。
group:仓库组,用来合并多个 hosted/proxy 仓库,通常我们配置自己的 maven 连接仓库组。Group仓库组也是可以自己进行定制的。
virtual(虚拟):兼容 Maven1 版本的 jar 或者插件
二、将项目发布到私服
1、需要在客户端即部署要部署的工程电脑上配置 maven 环境,并修改settings.xml 文件, 配置连接私服的用户和密码,此用户名和密码用于私服校验,因为私服需要知道上传的账号和密码是否和私服中的账号和密码一致
在servers节点下进行配置如下代码:
<!-- 定义稳定版本的id名称,用户名密码 -->
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<!-- 定义开发版本的id名称,用户名密码 -->
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
2、配置项目需要上传项目的pom.xml,配置私服仓库的地址,本公司的自己的 jar 包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为 release 则上传到私服的 release 仓库,如果版本为snapshot 则上传到私服的 snapshot 仓库
<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8079/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8079/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
注:这里的 id 标签的值要和 settings.xml 配置文件中的id值保持一致
3、在该工程中执行deploy命令,发布项目到私服上
查看私服结果:
也可以发布RELEASES稳定版本的jar包到私服 :
重新deploy后查看私服结果:
三、从私服上下载jar包
1、在maven的settings.xml配置文件中配置私服的镜像文件
<mirror>
<!-- id名称 -->
<id>nexusmaven</id>
<!-- 表示拦截所有的请求,都重定向到私服,从私服下载jar包,私服没有再去中央仓库下载 -->
<mirrorOf>*</mirrorOf>
<name>nexus maven</name>
<!-- 私服的组地址 -->
<url>http://localhost:8079/nexus/content/groups/public/</url>
</mirror>
进行测试:
先把自己的某个项目发布到私服中(用上面已经发布的即可),然后删除掉本地仓库中的jar包,再使用其他项目去依赖该jar包,在其他项目中引入该坐标依赖。
2、配置仓库依赖
可以修改自己项目的pom配置文件,添加仓库的配置
<repositories>
<repository>
<id>nexus</id>
<name>nexusmaven</name>
<url>http://localhost:8079/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<url>http://localhost:8079/nexus/content/groups/public/</url>
<name>pluginRepositories</name>
</pluginRepository>
</pluginRepositories>
注:端口号记得保持一致
但是该方式不是特别的理想,需要在每一个项目的pom文件中都添加相同的配置,比较麻烦吗,因此我们可以在maven的settings.xml配置文件中添加配置,完成统一的设置
3、在setting.xml中配置
<!-- 下载jar包配置 -->
<profile>
<!--profile的id -->
<id>dev</id>
<repositories>
<repository>
<!--仓库id,repositories可以配置多个仓库,保证id不重复 -->
<id>nexus</id>
<!--仓库地址,即nexus仓库组的地址 -->
<url>http://localhost:8079/nexus/content/groups/public/</url>
<!--是否下载releases构件 -->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载snapshots构件 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository>
<!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8079/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
激活配置:
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
进行测试
四、第三方jar包发布到私服
参考文献:第三方SDK包上传到私有Maven仓库
1、maven的conf文件夹里的setting文件加入有上传权限的账号。(注意:server 下的 id名称要记住,下面的操作步骤会有用到;id最好不要有特殊字符之类的。)
<server>
<id>thirdparty</id>
<username>admin</username>
<password>admin123</password>
</server>
2、下载好第三方包,最好存放在全英文路径下,路径中间不要有英文、空格或者中文之类的,可以使用cmd命令下载,也可以直接去网络上下载
3、maven命令上传第三方包。
命令如下:
mvn deploy:deploy-file -Dmaven.test.skip=true -DgroupId=sdk的groupId -DartifactId=包的名称 -Dversion=版本号(如:0.0.1) -Dpackaging=包的类型 -Dfile=第三方sdk存放在本地的文件位置 -Durl=要上传到maven仓库的仓库位置 -DrepositoryId=maven中配置的server id
1 -DgroupId=sxd.jar 第三方包的groupId
2 -DartifactId=jacob 第三方包的名称
3 -Dversion=0.0.1 版本号(如:0.0.1),建议用三位版本号表示
4 -Dpackaging=jar 上传的类型是jar类型
5 -Dfile=G:\jar\jacob-1.18.jar 第三方sdk存放在本地的文件位置
6 -Durl=http://localhost:8081/repository/myself_hosted/ 要上传到maven仓库的仓库位置
7 -DrepositoryId=release setting.xml文件中配置server的ID