查看官方镜像说明

建议使用nexus2,可能网上的资料这个版本居多。

我选择的是nexus3,~~~

启动容器

官方说明中提到的是使用docker直接启动。我选择用docker-compose启动。

docker-compose.yml文件如下:

  • mkdir -p /opt/nexus
  • cd /opt/nexus
  • vim docker-compose.yml
    version: '2'
services:
nexus3:
image: sonatype/nexus3
container_name: nexus3
volumes:
- './nexus-data:/nexus-data:rw'
ports:
- '8081:8081'
  • docker-compose up -d
  • docker-compose ps #查看容器启动状态

使用supervisor管理容器进程

  • vim /etc/supervisor/conf.d/nexus.conf
    [program:nexus]
directory = /opt/nexus ; 程序的启动目录
command=docker-compose up ; 启动命令,可以看出与手动在命令行启动的命令是一样的
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 30 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = root ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /var/log/nexus.log
  • supervisorctl update #更新配置,就会启动新增的程序nexus
  • supervisorctl status nexus
  • cd /opt/nexus
  • docker-compose ps

访问nexus3的portal

http://0.0.0.0:18081

帐号:admin

密码:admin123

默认已经有四个maven相关的仓库,分别是maven-central,maven-releases,maven-snapshots,maven-public。其中的类型的定义如下:

  • proxy是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库 下载,然后返回给用户,相当于起到一个中转的作用。

  • hosted是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里。

  • group是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了。

如何发布自己的构件到私有仓库中?

  • 在~/.m2/settings中增加server节点,根据需要可以添加多个server
  <servers>
<server>
<id>nexus-ielong</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
  • 在项目的pom.xml/build/中配置中配置maven-deploy-plugin
    <!--发布到私有仓库依赖的插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.1</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>false</skip>
</configuration>
</plugin>

温馨提示:如果在多模块项目中,可以将不需要发布的项目配置为skip=true。比如在parent的pom.xml中增加以下内容后,所有模块都会跳过发布。

    <build>
<plugins>
<!--发布到私有仓库依赖的插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
  • 在项目的pom.xml中配置distributionManagement
    <!--发布到私有仓库的配置-->
<distributionManagement>
<repository>
<id>nexus-ielong</id>
<name>nexus-ielong-releases</name>
<url>http://0.0.0.0:18081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-ielong</id>
<name>nexus-ielong-snapshots</name>
<url>http://0.0.0.0:18081/repository/maven-snapshots/</url>
<uniqueVersion>false</uniqueVersion>
<layout>legacy</layout>
</snapshotRepository>
</distributionManagement>

其中repository.id指~/.m2/settings.xml中配置的server.id, 这两个是同一个概念,值要一致。

  • 运行pom.xml所在目录 运行发布命令
    mvn clean deploy -Dmaven.test.skip=true

如何指定使用私有仓库下载maven构件?

有两种方式,建议使用第二种方式:

  • 第一种方式:在需要引用构件的项目中添加repository配置
    <!--在项目中指定使用私有仓库或者在~/.m2/settings.xml配置全局的mirror-->
<repositories>
<repository>
<id>nexus-ielong</id>
<name>ielong Nexus Repository</name>
<url>http://0.0.0.0:18081/repository/maven-public/</url>
</repository>
</repositories>
  • 第二种方式: 在~/.m2/settings中指定mirror
    <mirrors>
<!--不再使用aliyun的镜像-->
<!--<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>--> <!--使用自己的私有镜像-->
<mirror>
<id>nexus-ielong</id>
<name>nexus public group</name>
<url>http://0.0.0.0:18081/repository/maven-public/</url>
<mirrorof>*</mirrorof>
</mirror> </mirrors>

参考文档

Maven私有仓库-使用docker部署Nexus的更多相关文章

  1. 安装Maven并搭建Maven私有仓库

    一.说明 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.我们在进行Java代码开发的时候,Eclipse+Maven+Jetty是一个十 ...

  2. nexus3使用docker运行/创建docker私有仓库/maven私有仓库

    version: '3.2' services: nexus3: container_name: nexus3 hostname: nexus3 image: sonatype/nexus3:3.14 ...

  3. [maven] 使用Nexus创建maven私有仓库

    1.为什么需要maven私有仓库? 从Maven中央仓库下载所需的jar包,需要外网的支持.如果公司不能上外网的话则不能从中央仓库下载所需jar包,公司网速慢的时候也会影响项目构建的速度.用户可以用n ...

  4. 实战maven私有仓库三部曲之三:Docker下搭建maven私有仓库

    本章是<实战maven私有仓库>系列的第三篇,在前两章中,我们先在linux搭建maven私有仓库,然后在开发环境使用此仓库,本章我们在docker下快速搭建maven私有仓库,然后像前面 ...

  5. 用nexus搭建自己的maven私有仓库

    用nexus搭建自己的maven私有仓库  刚安装nexus时,nexus启动失败,启动不到1分钟,自动停止.后来查找到了原因: Java 6 Support EOLOracle's support ...

  6. 使用Nexus配置Maven私有仓库

    使用Nexus配置Maven私有仓库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装配置Nexus 1>.下载nexus 下载地址:https://www.sonat ...

  7. 使用nexus搭建一个maven私有仓库

    使用nexus搭建一个maven私有仓库 大家好,我是程序员田同学.今天带大家搭建一个maven私有仓库. 很多公司都是搭建自己的Maven私有仓库,今天就带大家使用nexus搭建一个自己的私有仓库, ...

  8. Docker私有仓库与Harbor部署使用

    Docker私有仓库与Harbor部署使用 目录 Docker私有仓库与Harbor部署使用 一.本地私有仓库 1. 下载registry镜像 2. 在daemon.json文件中添加私有镜像仓库地址 ...

  9. 实战maven私有仓库三部曲之二:上传到私有仓库

    在上一章<实战maven私有仓库三部曲之一:搭建和使用>我们搭建了maven私有仓库,并体验了私有仓库缓存jar包的能力,避免了局域网内开发人员去远程中央仓库下载的痛苦等待,本章我们再来体 ...

随机推荐

  1. VMware虚拟机安装黑苹果MacOS Mojave系统详细教程

    更多资源请百度搜索:前端资源网 欢迎关注我的博客:www.w3h5.com 最近遇到一个H5页面的 iPhone X 刘海兼容问题.查到一个 XCode 编辑器,可以模拟 iPhone X 环境运行. ...

  2. BCG库的一个bug

     作者:朱金灿 来源:http://blog.csdn.net/clever101 同事在使用BCG库图表组件(BCG库的版本为BCGCBPRO1510)时遇到一个问题,就是图表标题总是出现乱码, ...

  3. SQLServer 学习笔记之超详细基础SQL语句 Part 3

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 2------------------- 13. 使用compute对查 ...

  4. Unity Profiler CPU Usage(CPU使用情况)

    在Profiler界面点击左侧CPU Usage,Profiler界面下方Hierarchy窗口会列出各个函数对当前CPU的耗时,从大到小排序. 然后分析,各个函数的耗时是否异常,分析有没有可以优化的 ...

  5. TreeView失去焦点时亮显选中状态

    Windows Form下设置属性即可. TreeView.HideSelection = false

  6. 【Python】pydot安装失败解决方法

    使用keras时输出网络结构需要用到pydot,总是安装失败,最后按照下面这样的步骤成功了. 1.安装graphviz:pip install graphviz 2.安装graphviz软件,地址在: ...

  7. leetCode题解之Longest Palindrome

    1.题目描述 2.问题分析 直接用hash table 做就行. 3.代码 int longestPalindrome(string s) { ) ; map<char,int> m; f ...

  8. mysql面试题目

    昨天晚上无意中翻译到baidu的 dba(mysql,redis) 面试题,阅读了一下,发现没有一个自己能完美解释的.这确实是温床导致的思维懒惰. 具体几个问题如下: 1:MySQL InnoDB存储 ...

  9. JQUERY中find方法

    [jquery]find()方法和each()方法 find()方法 jquery选择器非常强大,利用css的命名规约,可以更快更方便的找出想要的元素. 比如: $("#id") ...

  10. mysql主从不同步问题 Error_code: 1197

    首先查看从的状态   mysql> show slave status \G *************************** 1. row *********************** ...