私服(Nexus)
上篇文章中我们说到了maven分模块管理SSH项目,其中我们每开发一个模块,都要把它发布到本地仓库(命令:install),用于模块间建立联系。但是,实际项目开发中,各个团队开发模块不可能在同一台pc上进行,那么为了让模块之间建立联系就要用到远程仓库,也就是私服(Nexus)。
1、下载安装
文件夹sonatype-work就是远程仓库,用于存放文件
下边我们以命令行的形式安装并启动nexus
a、安装,进入到nexus的bin目录下,安装命令为nexus.bat install
安装完成我们PC服务里边就会有nexus服务,但是本人不建议大家在服务中心手动开启,
我们还是以命令行的形式启动服务nexus.bat start
这里启动成功了,但是有时候可能会出现启动失败的问题,本人在这里提供一种解决方案:
1、找到该配置文件
打开配置文件,把标黄部分修改为:wrapper.java.command=D:\java\jdk1.7.0_80\bin\java.exe
因为这里依靠的就是jdk中的java.exe,之所以不成功是因为Java环境没配置好,这里直接给它定位
另外还有一个配置文件需要注意:
文件内容就是提供了端口号和项目名称,因此访问私服的路径:http://localhost:8081/nexus
远程仓库是需要登录的,默认的用户名/密码:admin/admin123
仓库类型:
virtual:虚拟仓库
proxy:代理仓库(central就是中央仓库,也就意味着nexus找不到的要到central中找)
hosted:宿主仓库 本地仓库 Releases和Snapshots就是我们创建项目时选择的版本
group:组 就是包含多种类型
因为私服是由运维部门进行管理的,所以我们只需要了解一下即可
下边我们做一个实际案例:把dao模块发布到nexus上,service从上边下载
发布到nexus的命令为:deploy
但是会报错,因为我们指定私服,项目并不知道要发布到哪里,解决方案:
在dao模块的pom.xml文件中添加配置文件
<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
这里就是指定了两个版本的私服,但是指定完私服之后,发布到的私服的操作也是会收到限制的,因此在maven的setting.xml文件中添加一下配置
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
这样就有了发布权限了,dao模块也就可以顺利发布了
service层下载dao
在maven的setting.xml文件中添加
<profile>
<!--profile的id-->
<id>dev</id>
<repositories>
<repository>
<!--仓库id,repositories可以配置多个仓库,保证id不重复-->
<id>nexus</id>
<!--仓库地址,即nexus仓库组的地址-->
<url>http://localhost:8081/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:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
然后添加激活配置
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
这样你把service层中的dao包删除,更新项目就会自动从nexus上下载了。
===================================================================================
尽人事,听天命。我相信只有那些疯狂到自以为能改变世界的人才会真正改变世界。
坚持别人不能坚持的坚持,终将收获别人不能收获的收获。这就是我,一个纯粹想靠技术改变命运的人。