利用 Docker 部署sonatype/nexus3 创建团队

2018-11-19  本文已影响0人  有料美拓

1.提出问题

项目开需要maven,但是项目内牵涉比较多的项目间的依赖,通过git可以传递代码,但是有时候需要用jar包方式发布指定的版本;这时候就需要私有的maven库来提交项目的共享包;并通过maven来达成包的分发与更新;
要解决这个问题,网上可以找到一些资料,但是有些版本较旧,有些太过复杂.所以自己做一个部署的记录.去掉那些复杂的配置,先享受一下私有 maven 仓库的便利.

2.解决服务器端的配置

2.1.需要的环境

2.2.安装过程

下载nexus3,使用 3.13.0版本这个版本。

docker pull sonatype/nexus3:3.13.0

运行docker images查看下载的镜像的id号。


maven_01.png

2.3.运行与配置

启动镜像。注意镜像编号

docker run -d -p 8081:8081 --name ylmr 777b20c20405

2.4 访问 WEB 后台管理端

使用浏览器访问 http://192.168.0.99:8081进入web管理端。默认admin admin123,登录。

这里需要补充一两个概念

第一步:创建仓库

在reposeitoriy下的repositories功能中

maven_02.png

下面还有一个Hosted的配置,这里需要特别留意Allow redeploy允许充部署。


maven_03.png

第二步创建roles

这里要留意,我们创建的roles主要是为了操作yl_repo仓库的权限;所以创建的时候要指定yl_repo相关的操作。为了方便设置了全部的操作权限。


maven_04.png

这里有一个小技巧,就是在Filter这里可以通过录入yl_rep也就是我们刚刚创建的仓库名称来快速找到我们希望设置的全下。

第三步:创建用户

这里要授权给这个用户刚刚我们为yl_repo这个仓库设定的角色。
服务器端的设置这样就好了。


![maven_06.png](https://img.haomeiwen.com/i4952562/f779924468577ed5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

3.解决客户机的配置

客户机主要是配置pom文件,我们在一个maven项目中肯定会有一个pom.xml文件,通过这个文件由maven来进行管理我们的jar包。对于pom文件的详细解释可以参考http://maven.apache.org/pom.html](http://maven.apache.org/pom.html)这个链接。

3.1第一步配置开发机的maven设定settings.xml

这里主要解决一个登陆的问题,因为我们给新创建的仓库yl_repo设定了角色和权限,所以需要指定登陆的用户和密码才能访问这个仓库,对这个仓库进行创建group和artifact和不同的版本。


<settings xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers>
<server>
<id>yl_repo</id>
<username>yl_repo_user</username>
<password>123456</password>
</server>
</servers>
<mirrors/>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>

我们需要在idea中找到指定的maven配置文件为我们修改过的maven配置。让用户和密码生效

maven_06.png

3.2第二步设定项目的pom.xml文件

指定pom.xml主要是要让项目知道我要从哪里获得maven的依赖,默认我们使用ali的国内镜像和我们自己新建的yl_repo仓库。提交项目文件的时候我们就提交向我们自己的yl_repo仓库。以确保我们开发间的配合。

<!--仓库配置,依赖的源,按顺序决定优先级-->
<repositories>
<repository>
<id>aliyun-repo</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>
<!--我们自己的仓库-->
<repository>
<id>yl_repo</id>
<url>http://192.168.0.99:8081/repository/yl_repo/</url>
</repository>
</repositories>
<!--插件搜索的仓库地址-->
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</pluginRepository>
</pluginRepositories>
<!--配置提交的目标库地址-->
<distributionManagement>
<repository>
<id>yl_repo</id>
<url>http://192.168.0.99:8081/repository/yl_repo/repositories/</url>
</repository>
</distributionManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

这样就基本完成了我们客户端配置。至此,你就可以向我们的私有仓库提交jar包和引用jar包了。

4.遗留问题

其实还有一个问题没有得到解决,就是如果大家都有权限提交jar包,那么冲突和管理如果进行?

比如两个人同时在修改一个项目的包,如果两个人同时都提交,那么jar包还是会冲突!!

这个可能要从管理上想办法了,也就是一个项目只能有一个人负责提交jar包,其他人配合他进行工作。也就是只要配置jar包的下载就可以了。不能发布。目前就只能想到这样的解决。大家还有更好的方案么?

上一篇 下一篇

猜你喜欢

热点阅读