查看官方镜像说明

建议使用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. idea加载JSTL库

    被这个错误缠了很长时间,偶然解决.eclipse for EE里导入JSTL没有问题,在JetIdea里就报classnotfound的异常. 解决方案:打包方式fix一下 新建library fil ...

  2. Problem4-Project Euler

    Largest palindrome product   A palindromic number reads the same both ways. The largest palindrome m ...

  3. java网页数据抓取实例

    在很多行业中,要对行业数据进行分类汇总,及时分析行业数据,对于公司未来的发展,有很好的参照和横向对比.所以,在实际工作,我们可能要遇到数据采集这个概念,数据采集的最终目的就是要获得数据,提取有用的数据 ...

  4. vcenter server appliance(vcsa) 配置IP的方法

    方法一: vcenter server appliance 5.1 及以后版本包括5.5,在安装完毕后,console界面是没有网络配置项的,如果需要进行IP配置,可以login后,输入命令yast( ...

  5. mysql5.7 误删管理员root账户

    1.停止数据库,并在mysql配置文件my.cnf中添加skip-grant-tables参数到[mysqld]配置块中 2. 执行 systemctl start mysqld 3. 执行 mysq ...

  6. C语言实现输出杨辉三角

    1.倒推法实现输出杨辉三角右半部分,代码如下: #include<stdio.h> int main() { ]; printf("请输入行数n:"); scanf(& ...

  7. 第二次SDN上机作业

    SDN第二次作业 1.安装floodlight fatter树在floodlight上的连接显示 2.生成拓扑并连接控制器floodlight,利用控制器floodlight查看图形拓扑 floodl ...

  8. Alpha- 事后诸葛亮(麻瓜制造者)

    目录 预期计划 现实进展 团队体会 成员分工及工作量比例 会议总结 预期计划 在Alpha阶段开始之前,我们的预期计划是:从用户登录,发布商品.发布求购信息的基本功能开始做起.用户登录使用输入教务处的 ...

  9. python reload(sys)找不到,name 'reload' is not defined和Python3异常-AttributeError: module 'sys' has no att

    基于python3.6.1版本,在一个.py文件中,加入这3行:import requests, re, sysreload(sys)sys.setdefaultencoding("utf- ...

  10. BZOJ3787:Gty的文艺妹子序列(分块,树状数组)

    Description Autumn终于会求区间逆序对了!Bakser神犇决定再考验一下他,他说道: “在Gty的妹子序列里,某个妹子的美丽度可也是会变化的呢.你还能求出某个区间中妹子们美丽度的逆序对 ...