使用Docker搭建Maven私服

一、前言

别再傻傻的使用软件包的形式去安装Nexus3了,现在是容器化的时代了。


二、安装过程

一条命令安装好Nexus3

docker run -d -p 8081:8081 --name nexus -v /usr/local/maven/apache-maven-3.6.0:/usr/local/maven sonatype/nexus3

容器启动完成后,等待Nexus3初始化好后,进入localhost:8081端口查看,出现以下的界面,证明我们安装好了。Nexus3默认的管理员账号密码是admin/admin123

使用Docker搭建Maven私服_第1张图片


三、推送我们的jar包

使用idea开发完成后,在pom文件进行如下的配置。


    4.0.0

    com.exmaple
    testNexus
    1.0-SNAPSHOT
    jar

    
        
            nexus
            maven-releases
            http://ip:port/repository/maven-releases/
        
        
            nexus
            maven-snapshots
            http://ip:port/repository/maven-snapshots/
        
    

将两个url中的ip和port改成自己的即可。

并修改maven安装目录中的conf/settings.xml,添加nexus的server。

注意:这两个repository中的id要和接下来配置的server的id一致。

    
        
            nexus
            admin
            admin123
        
    

接下来,在Terminal中输入mvn deploy,即可将jar包推送至maven-releases仓库中。

注意:此时的jar包的version为1.0-SNAPSHOT,最后就会推送至maven-snapshots。

若修改为1.0,或修改成1.0-RELEASE,则最后会推送到maven-releases仓库中。


四、从远程仓库拉取jar包

首先在pom中声明我们要拉取的包,即为刚才我们推送的包

    
        
            com.exmaple
            testNexus
            1.0-SNAPSHOT
        
    

接着我们配置setting.xml




    本地maven仓库地址
    
    
    
    
    
        
            nexus
            admin
            admin123
        
    

    
        
            nexus
            nexus
            http://ip:port/repository/maven-public/
            *
        
    

	    
        
            nexus
            
                
                    maven-public
                    http://ip:port/repository/maven-public/
                    
                        true
                    
                    
                        true
                    
                
            
        
        
            jdk-1.8
            
                true
                1.8
            
            
                1.8
                1.8
                1.8
            
        

    
    
        nexus
        jdk-1.8
    



最后右键pom文件-Maven-reimport,则会拉取下来,如图所示。

使用Docker搭建Maven私服_第2张图片


五、批量推送本地Maven仓库的所有jar包

一般来说,我们在windows进行开发,Maven的本地仓库也是在windows上,而Nexus容器则运行在linux上。

我们先把本地Maven仓库里面的内容通过xftp复制到linux上的一个目录中,比如复制到repo中。

然后也是在repo中,新建脚本文件mavenImportBatch.sh文件,内容如下:

#!/bin/bash
# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line params
while getopts ":r:u:p:" opt; do
	case $opt in
		r) REPO_URL="$OPTARG"
		;;
		u) USERNAME="$OPTARG"
		;;
		p) PASSWORD="$OPTARG"
		;;
	esac
done
 
find . -type f -not -path './mavenImportBatch\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

赋予可执行权限:

chmod 777 mavenImportBatch.sh

执行脚本:

./mavenImportBatch.sh  -u admin -p admin123 -r http://ip:port/repository/maven-releases/

最后可以在maven-releases中看到,我们已经将本地所有的jar包都已经批量上传至远程仓库中了。

使用Docker搭建Maven私服_第3张图片

大功告成!

你可能感兴趣的:(Docker,maven私服,nexus,docker)