docker启动nexus maven私服和pom文件配置

本文详细描述了如何使用Docker部署SonatypeNexus3私服,包括启动镜像、获取和修改admin密码、设置ApacheMaven的setting.xml以连接私服,以及配置镜像优先级和pom文件的仓库引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:最近打算建一个自己的maven私服,尝试连接上去,本地打包上传到私服,所以记录一下,以防备用

目录

准备工作:

正文:

1.docker 启动 拉取nexus镜像,启动nexus:

2.获取admin密码,登录admin账户

 3.根据提示修改admin密码,复制maven地址,如下都是maven库,可以copy地址

文件上传

 1.修改apache-maven的setting.xml文件,添加私服账号

 2.pom文件,上传到nexus的部分

jar包拉取

1.设置setting文件,用于项目在该环境拉取项目

2.pom文件,拉取nexus到本地


准备工作:

1.docker for windows

2.idea新建maven项目

3.下载apache-maven,准备修改apache-maven-3.5.4.1\conf\setting.xml

正文:

1.docker 启动 拉取nexus镜像,启动nexus:

>docker pull sonatype/nexus3
#启动并映射在本地8081端口
>docker run -d -p 8081:8081 --name nexus sonatype/nexus3

启动http://localhost:8081

2.获取admin密码,登录admin账户

admin的密码文件存放在以下位置(文件名忘了,差不多是这样)

>docker container exec -it d06022498a04 /bin/bash
>cd /opt/sonatype/sonatype-work/nexus3
>cd adminpassword.txt

 3.根据提示修改admin密码,复制maven地址,如下都是maven库,可以copy地址

文件上传

 1.修改apache-maven的setting.xml文件,添加私服账号

    <servers>
        #自定义id,pom文件用到
        <server>
            <id>mai-snapshots</id>
            #nexus-maven设定的用户
            <username>admin</username>
            <password>mai123456</password>
        </server>
    </servers>
    

 2.pom文件,上传到nexus的部分,public库是肯定上传一份的

要注意这里我选的是<snapshotRepository>标签,maven库必须选择snapshots

如果选择realse库,那就填<repository>标签,而且该项目的<version>不能带有snapshots

    <distributionManagement>
        <snapshotRepository>
            #对应serverId,部署后上传jar包地址,注意这里是快照的库,需要一一对应,不然报错
            <id>mai-snapshots</id>
            <url>http://localhost:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

jar包拉取

仓库优先级为:本地仓库(localRepositories[/.m2]) > profile中的repositories仓库 > POM > mirrors全局仓库

1.设置setting文件,用于项目在该环境拉取项目

详解一下<mirrorof>,研究了很久,其实发现就是拦截器,配合<repository>的<id>使用,用于替换他的url地址,<repository>下有一个缺省的仓库,那就是<id>central</id>的apache仓库。因为是国外库,下载速度慢,所以<mirror>通常用来拦截<id>central</id>:

mirrorOf=“*”  //mirror一切,使用后配置的所有repository不起作用了,因为全都被拦截了

mirrorOf=my-repo-id //镜像my-repo-id,你配置的my-repo-id仓库不起作用了,就拦截了他

mirrorOf=*,!my-repo-id  //!表示非运算,排除你配置的my-repo-id仓库,其他仓库都被镜像了。就是请求下载my-repo-id的仓库的jar不使用mirror的url下载,其他都是用mirror配置的url下载

mirrorOf=external:*  //如果本地库存在就用本地库的,如果本地没有所有下载就用mirror配置的url下载



作者:忘光光
链接:https://www.jianshu.com/p/c4f02c5bdfc7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

#本地仓库,最高优先集
<localRepository>C:/user/.m2</localRepository>
<mirror>
    #mirror相当于拦截器,缺省的id=central被拦截了,拉取代码从下面地址拉取
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>  
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<profiles>
        
        <profile>
            #自定义环境名,<activeProfiles>可以切换环境
            <id>snapshot</id>
            #可以设定多个maven库
            #profiles 一般用于搭建私服,下载优先级仅次于本地
            <repositories>
                <repository>
                    #对应serverId
                    <id>mai-snapshots</id>
                    #nexus里面的库地址
                    <url>http://localhost:8081/repository/maven-public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    #maven插件管理仓库,优先从下面地址下载插件,缺省central的库
                    <id>mai-snapshots</id>
                    <url>http://localhost:8081/repository/maven-public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
   #默认拉取的profiles
    <activeProfiles>
        <activeProfile>snapshot</activeProfile>
    </activeProfiles>

2.pom文件,拉取nexus到本地

#该地方配置优先于setting.xml文件加载,覆盖setting文件,也会被mirror拦截
<repositories>
            <repository>
                    #对应serverId
                    <id>mai-snapshots</id>
                    #nexus里面的库地址
                    <url>http://localhost:8081/repository/maven-public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值