Docker安装Nexus3搭建Maven私服

2023-11-15

搭建私服好处

  1. 方便团队协作,A开发完成的代码,提交的私服上,B添加pom.xml就可以使用A的代码了
  2. 公司内部员工,不需要连接外网就可以从内网拉取依赖了。

安装步骤

1. 查看镜像

docker search nexus3

查询内容

[dingguo@dingguodeMacBook-Pro:~]$ docker search nexus3
NAME                                  DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
sonatype/nexus3                       Sonatype Nexus Repository Manager 3             733                                     
shifudao/nexus3                       clone from nexus3 image but based from openj…   4                                       [OK]
home1oss/nexus3                       An auto configured nexus3                       2                                       [OK]
madmuffin/nexus3                      Sonatype Nexus3 Milestone7 docker image         2                                       [OK]

2. 拉取第一个镜像

docker pull sonatype/nexus3

3.查看镜像

[dingguo@dingguodeMacBook-Pro:~]$ docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
sonatype/nexus3                    latest              87d9a097d22c        2 weeks ago         634MB

4. 修改镜像名称

docker tag sonatype/nexus3 nexus3

查看镜像

[dingguo@dingguodeMacBook-Pro:~]$ docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
nexus3                             latest              87d9a097d22c        2 weeks ago         634MB

5. 创建容器

docker run -id --privileged=true --name=nexus3 --restart=always -p 8081:8081 -v /Users/dingguo/nexus3/nexus-data:/var/nexus-data 87d

查看docker日志

docker logs -f 9b

会返回一大串的内容,等几分钟,直到出现下面表示启动成功

*****省略*****
*****省略*****
*****省略*****
2020-01-10 03:36:12,690+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.AbstractConnector - Started ServerConnector@76e00d3{HTTP/1.1,[http/1.1]}{0.0.0.0:8081}
2020-01-10 03:36:12,698+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.Server - Started @97140ms
2020-01-10 03:36:12,700+0000 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - 
-------------------------------------------------

Started Sonatype Nexus OSS 3.20.1-01

-------------------------------------------------

6. 在页面输入地址  http://localhost:8081/

点击右上角登录,默认账号/密码,admin/admin123

如果出现报错:如下

解决方案:

进入容器内部,查看 /nexus-data/admin.password 的密码

docker exec -it b8 bash
bash-4.4$ dir
bin   dev  help.1  lib	  licenses    media  nexus-data  proc  run   srv  tmp		     uid_template.sh  var
boot  etc  home    lib64  lost+found  mnt    opt	 root  sbin  sys  uid_entrypoint.sh  usr
bash-4.4$ more nexus-data/admin.password 
e7a42a55-6188-4dea-bad7-3989998f03b5
bash-4.4$ 

在页面输入密码:e7a42a55-6188-4dea-bad7-3989998f03b5

登录成功会弹出框,点击next,输入新的密码就可以了。

Nexus私服配置

如果我们要把写好的代码传到私服上,怎么配置呢?

1. 查看我们Nexus私服的地址

点击 maven-public 一行的copy,将地址复制保存

2. 修改maven的settings.xml文件

找到 settings.xml 文件,打开,需要添加两个部分

第一个部分

配置nexus私服地址,<url>标签的地址是 maven-public 上面复制的地址

<!-- Nexus私服配置 -->
<profile>
    <id>dev</id>
    <repositories>
        <repository>
            <id>nexus</id>
            <url>http://localhost:8081/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
</profile>

第二个部分

配置 Nexus私服发布的用户名密码,和私服登录密码一致

<!-- Nexus私服发布的用户名密码 -->
</servers>
  <server>  
    <id>maven-releases</id>  
    <username>admin</username>  
    <password>123456</password>  
  </server>  
  <server>  
    <id>maven-snapshots</id>  
    <username>admin</username>  
    <password>123456</password>  
  </server> 
</servers>

ok,settings.xml的配置就完成了。

2. 配置pom.xml文件

同理复制下图地址

pom.xml新增内容

<!--私服仓库-->
<distributionManagement>
    <repository>
        <id>maven-releases</id>
        <name>Nexus Release Repository</name>
        <url>http://localhost:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>maven-snapshots</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://localhost:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

3. 编写代码测试

新增一个类 HelloNexus 

package com.wjx;

/**
 * @Description:
 * @Author: dingguo
 * @Date: 2020/1/10 下午12:40
 */
public class HelloNexus {
    
    public void hello(){
        System.out.println("this is test");
    }
}

接下来就是将代码推到私服,代码版本

如图,点击 deploy

当出现下面这个表示已经上传成功

进入 maven-release 如下图,表示代码已经上传成功

右下角会有maven的依赖,如果在其他项目使用,把依赖拷贝过去就可以使用了。

可能遇到的问题

如果,相同版本再点击deploy就会报错

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.024 s
[INFO] Finished at: 2020-01-10T14:22:32+08:00
[INFO] Final Memory: 13M/167M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project nexus-demo: Failed to deploy artifacts: Could not transfer artifact com.wjx:nexus-demo:jar:1.1.0 from/to maven-releases (http://localhost:8081/repository/maven-releases/): Failed to transfer file: http://localhost:8081/repository/maven-releases/com/wjx/nexus-demo/1.1.0/nexus-demo-1.1.0.jar. Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases. -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

错误信息:Repository does not allow updating assets: maven-releases. -> [Help 1]

解决方案:

再次上传就不报错了。

附上 settingx.xml 的完全配置

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <!-- 本地仓库的位置 -->
    <localRepository>${user.home}/.m2/repository</localRepository>
  
    <!-- Apache Maven 配置 -->
    <pluginGroups/>
    <proxies/>

    <!-- Nexus私服发布的用户名密码 -->
    <servers>
      <server>  
        <id>maven-releases</id>  
        <username>admin</username>  
        <password>123456</password>  
      </server>  
      <server>  
        <id>maven-snapshots</id>  
        <username>admin</username>  
        <password>123456</password>  
      </server> 
    </servers>
    
    <!-- 阿里云镜像 -->
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <!-- https://maven.aliyun.com/repository/public/ -->
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>

    <!-- 配置: java8, 先从阿里云下载, 没有再去私服下载  -->
    <!-- 20190929 hepengju 测试结果: 影响下载顺序的是profiles标签的配置顺序(后面配置的ali仓库先下载), 而不是activeProfiles的顺序 -->
    <profiles>
        <!-- 全局JDK1.8配置 -->
        <profile>
            <id>jdk1.8</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
        </profile>

        
        <!-- Nexus私服配置 -->
        <profile>
            <id>dev</id>
            <repositories>
                <repository>
                    <id>nexus</id>
                    <url>http://localhost:8081/repository/maven-public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
        
        <!-- 阿里云配置: 提高国内的jar包下载速度 -->
        <profile>
            <id>ali</id>
            <repositories>
                <repository>
                    <id>alimaven</id>
                    <name>aliyun maven</name>
                    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>alimaven</id>
                    <name>aliyun maven</name>
                    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                </pluginRepository>
            </pluginRepositories>
        </profile>

    </profiles>
    
    <!-- 激活配置 --> 
    <activeProfiles>
        <activeProfile>jdk1.8</activeProfile>
        <activeProfile>dev</activeProfile>
        <activeProfile>ali</activeProfile>
    </activeProfiles>
</settings>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker安装Nexus3搭建Maven私服 的相关文章

随机推荐

  • Cookie与Session机制,以及scrapy中cookiejar的理解

    Http协议 http是一种无状态协议 先说什么是协议 说白了就是通讯过程中的一种规范 要求 那什么是无状态的呢 就是我们在向服务器请求一个页面的过程中 并不是一个持久性的连接 而是客户端发送一个请求 比方说 我打开腾讯网 然后服务器端返回
  • 惠普PC服务器HP DL360G5网卡的安装

    在惠普服务器 HP DL360G5上安装Linux ES4 0的时候 系统不会自动检测到网卡并安装驱动程序 因此需要手动安装网卡的驱动程序 以下是网卡的安装方法 1 rpm ivh bnx2 1 4 43f 1 src rpm 回车 界面如
  • linux图形界面卡死

    项目场景 linux图形界面卡死 问题描述 鼠标能够移动 但是整个图形界面卡住 解决方案 进入linux下共有六个虚拟控台 f2 f6 分别对应这不同的权限 ctrl alt f2 提示登陆 此时登陆root用户 先输入账号 再输入密码 登
  • IP数据包格式

    IP数据包格式如下 版本号 Version 指 IP 协议的版本 通常为 IPv4 或 IPv6 首部长度 Header Length 指 IP 数据包的首部长度 以 32 位字 4 字节 为单位 区分服务 Differentiated S
  • 网站服务器商标属于哪类,网络水晶头属于商标哪个类别

    水晶头是一种能沿固定方向插入并自动防止脱落的塑料接头 俗称 水晶头 专业术语为RJ 45连接器 RJ 45是一种网络接口规范 类似的还有RJ 11接口 就是我们平常所用的 电话接口 用来连接电话线 之所把它称之为 水晶头 是因为它的外表晶莹
  • jmeter学习笔记(三)-性能测试概念

    性能测试相关概念 a 响应时间 是用户提交一个请求 系统从开始呈现到将所有信息都呈现到客户端所需要的时间 以一个web应用的页面响应时间为例 页面的响应时间可分解为 网络传输时间 N1 N2 N3 N4 应用延迟时间 A1 A2 A3 b
  • 如何在你的Android工程中启用K2编译器?

    如何在你的Android工程中启用K2编译器 K2编译器是用于Kotlin代码编译的最新 高效编译器 你现在可以尝试使用了 Kotlin编译器正在为Kotlin 2 0进行重写 新的编译器实现 代号K2 带来了显著的构建速度改进 编译Kot
  • 数学基础:向量求导整理

    0矩阵求导网站 不包括叉乘和点乘求导 http www matrixcalculus org 1标量对向量求导 标量 分子 分别对行 列向量 分母 各元素求导 结果仍为行 列向量 维度与分母一致 定义行向量 y T y
  • 关于QString的常见用法(详细讲解)

    QString类提供一个unicode字符串 在QT软件开发平台中常用到的一种变量类型 其提供了很多方便的应用方法 下面介绍一些关于QString的常见用法 1 字符串末尾追加 example 1 QString str hello str
  • iMazing2023iOS系统设备数据传输与备份工具使用教程

    iMazing需要数据线将你的电脑和iPhone或者是iPad连接 这款软件是itunes的完美替代品 有用iPhone或iPad的朋们友推荐下载使用 只要在同一网络下 就可以轻松管理你的iPhone 可以说是非常的方便 平时在传输文件资料
  • Vue SEO解决方案

    目录 SEO是什么 SEO目的 Vue中seo的解决方案 SEO是什么 seo是一种网站优化技术 也被叫做搜索引擎优化 可以利用搜索规则提高网站上有关搜索的自然排名 主要表现为微博热搜控榜等 通过seo技术 可以实现一系列的商业行为 对产品
  • Unity+SteamVR开发——交互

    一 前言 本文使用两个工具为Unity2018 4 26和SteamVR2 6 1 SteamVR2 6 1相比之前的版本有了很大的改变 其中在交互上有了很大的提升 SteamVR2 6 1上给出的案例中提供了抛射物体 线性驱动 环形驱动以
  • QT实现必须确定的弹窗窗口

    头文件包含 消息弹窗 include
  • java.lang.IllegalStateException: Duplicate key,异常

    问题描述 将list集合里的数据转化为map对象的时候 出现了如下异常 标题中的异常 原因 list转成map的时候map中的key重复导致的 使用场景 在实际应用开发中 会常把一个List的查询数据集合转为一个Map 那么在这里的 lis
  • Systrace 线程 CPU 运行状态分析技巧 - Runnable

    Runnable 状态 在 Systrace 中的显示方式 Perfetto Systrace 不同 CPU 运行状态异常原因 101 Running 长 1 中讲解了导致 CPU 的 Running 状态耗时久的原因与优化方法 这一节介绍
  • 提高计算机水平的小技巧,电脑上的几个小技巧,让你的工作效率提高一半!

    不管是工作还是学习 电脑已经是大家生活中必不可少的一部分了 那你敢说自己已经是电脑高手了吗 但是其实有很多电脑上的小技巧我们却还是不知道的 今天小乐就给大家分享几个电脑上的几个小技巧 希望可以让小伙伴们有所收获 其实在信息化时代的今天 依然
  • uboot启动流程之进uboot命令行和启动内核

    1 上电进board init r gt init sequence r gt run main loop gt main loop gt bootdelay process gt autoboot command主要就是这么个流程 2 具
  • 三分钟读懂HashMap.put()方法源码

    写这篇博客原因是在看HashMap源码的时候 发现里面使用了很多简易的写法 代码量少了也导致理解难度变大了 所以梳理了一下 写了一个简单的伪代码 整体思路应该是差不多的 代码中的table为HashMap中已初始化的node数组 也就是实际
  • 【编译原理】LR(0)分析方法(c++实现)

    基本流程 Created with Rapha l 2 2 0 输入文法 拓广文法 求项目集规范族 GO I a 转移函数 构造DF
  • Docker安装Nexus3搭建Maven私服

    搭建私服好处 方便团队协作 A开发完成的代码 提交的私服上 B添加pom xml就可以使用A的代码了 公司内部员工 不需要连接外网就可以从内网拉取依赖了 安装步骤 1 查看镜像 docker search nexus3 查询内容 dingg