maven私服仓库使用docker快速搭建教程

 一、使用场景

        大家都知道,在实际的开发中,我们是都会有一些公共的模块,这些公共模块是每个模块或者服务都会使用的,比如一些工具类,异常类,公共响应体、基类、常量、枚举、自定义的注解等。这些东西都是会随着我们不断的开发需求而改变的。我们知道,如果没有搭建私服的情况下,就只能每次更新公共模块的代码,然后deploy到本地仓库。而使用私服,只需要把我们的jar包每次更新后推送到私服仓库,每次打开项目后,刷新一下maven就行了。而这只是使用maven私仓的其中一个好处。

二、使用Maven私服的好处

        

  1. 节省外网带宽
  2. 加速maven构建
  3. 部署第三方构件
  4. 提升稳定性,增强控制
  5. 降低中央仓库的负荷
  6. 方便多人协同开发

 三、使用docker安装nexus

     1、查看docker是否安装

        

         docker未安装,安装docker。如果docker已安装,可跳过docker安装的步骤。

     2、安装docker
         2.1、安装yum工具

                如果已安装可跳过

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2 --skip-broken
        2.2、更新本地镜像源:
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

    执行上述第一条命令的时候,可能会报如下异常:

出现该异常基本上网络连接不正常,可以使用ping  www.baidu.com试一下是否能够ping通。

   2.3、安装docker 
yum install -y docker-ce  #docker-ce为社区免费版本。
  2.4、启动docker

         docker应用需要用到各种端口,逐一去修改防火墙设置,非常麻烦,因此建议大家直接关闭防火墙。

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

    此时在使用docker -v命令,就可以得到docker的安装信息了

     

   2.5、配置镜像加速

     docker官方镜像仓库网速较差,我们需要设置国内镜像服务,执行如下命令即可;

#切换到docker配置目录下
sudo mkdir -p /etc/docker

#设置docker镜像
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://4pztzo26.mirror.aliyuncs.com"]
}
EOF

#重新加载服务配置
sudo systemctl daemon-reload
#重启docker
sudo systemctl restart docker
   3、安装nexus
       3.1、搜索镜像       
       3.2、拉去镜像
docker pull sonatype/nexus3
      3.3、配置外部挂载文件         
#挂载文件夹一定要放开权限,否则后面启动nexus时会无法启动
mkdir -p /opt/software/nexus-data && chmod 777 /opt/software/nexus-data
     3.4、启动容器
docker run -d -m 2G --name=nexus3 -p 8081:8081 -v /opt/software/nexus-data:/nexus-data sonatype/nexus3

       使用docker ps 可以查看当前启动的容器。如果,nexus在启动的容器列表中,就是启动成功,否则就是启动失败。此时,可使用docker logs nexus3来查看日志,分析启动失败的原因。

    3.5、浏览器访问

       浏http://192.168.190.128:8081,点击sing in登录,一般默认用户名密码为admin/123456

     如果,登录后提示密码不正确,则是因为nexus在3.17版本后改成随机的密码了,不再使用默认密码123456。

随机密码可以切换到 /opt/software/nexus-data目录下从admin.password文件中查看到

​ 登录成功后,系统会让你更改密码,此时,可按要求更改密码,然后点击下一步

这里勾选第一个,否则不勾选的话可能会出现这种情况:虽然能够正确的推送jar包到maven私仓,但是其他人却不能从maven私仓拉取jar包。

​ 到这里一个maven私仓就正确的搭建出来了

  3.6、页面介绍 

         

默认仓库说明: 

maven-central:maven中央库,默认从Central Repository:拉取jar,可以改成阿里仓库

maven-releases:私库发行版jar,初次安装完后,将Deployment policy设置为Allow redeploy

maven-snapshots:私库快照(调试版本)jar

maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml或项目pom.xml中使用

仓库类型:

Group:这是一个仓库聚合的概念,用户仓库地址选择Group的地址,即可访问Group中配置的,用于方便开发人员自己设定的仓库。maven-public就是一个Group类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x默认Releases,Snapshots,Central,也可以自己设置。

Hosted:私有仓库,内部项目的发布仓库,专门用来存储本地项目生成的jar文件

Snapshots:本地项目的快照仓库

Releases: 本地项目发布的正式版本

Proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage属性的值即被代理的远程仓库的路径),如可配置阿里云maven仓库

Central:中央仓库

四、配置maven使用私仓 

    1、配置maven的setting.xml文件

       在maven的setting.xml中配置如下内容:

<!--l加入server配置,用于后续发布包权限验证-->
	<server>
        <id>nexus-releases</id>
        <username>admin</username>  #账号密码就是nexus的账号密码
        <password>123456</password>
    </server>
    <server>
        <id>nexus-snapshots</id>
        <username>admin</username>
        <password>123456</password>
    </server>



 <mirrors>
	<mirror>
		<id>nexus-aliyun</id>
		<mirrorOf>central</mirrorOf>
		<name>Nexus aliyun</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>
	<mirror>
        <!--该镜像的唯一标识符。id用来区分不同的mirror元素。 -->
        <id>maven-public</id>
        <!--镜像名称 -->
        <name>maven-public</name>
        <!--*指的是访问任何仓库都使用我们的私服-->
        <mirrorOf>*</mirrorOf>
        <!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 -->
        <url>http://192.168.190.128:8081/repository/maven-public/</url>		
    </mirror>
  </mirrors>
  2、配置公共模块的pom.xml文件

        公共模块的pom.xml文件配置内容如下:

<!--配置私服发布地址,repository里的id需要和maven配置setting.xml里的server id名称保持一致-->
    <distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <name>Releases</name>
            <url>http://192.168.190.128:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Snapshot</name>
            <url>http://192.168.190.128:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

    配置完成后,可使用mvn deploy将会将公共模块发布到maven私仓。

注:如果项目版本号末尾带有 -SNAPSHOT,则会发布到snapshots快照版本仓库

如果项目版本号末尾带有 -RELEASES 或什么都不带,则会发布到releases正式版本仓库

3、配置需要引入公共模块服务的pom.xml

     配置如下:

#引入公共模块依赖
 <dependency>
    <groupId>vip.zcloud</groupId>
    <artifactId>zcloud-base-component</artifactId>
    <version>1.0-zcloud-SNAPSHOT</version>
 </dependency>

  需要注意的是,我们使用的setting.xml文件一定是我们更新私仓后配置的。

到此,你只要刷新maven,便能够直接将私服上公共模块的更新,更新到本地了。  

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Maven构建并推送Docker镜像到私有库的步骤如下: 1. 在pom.xml文件中添加Docker Maven插件的依赖。 2. 在pom.xml文件中添加Docker Maven插件的配置,包括Docker主机地址、Docker Maven插件版本、Docker镜像名称等信息。 3. 使用Maven命令打包项目,并生成Docker镜像。 4. 使用Maven命令推送Docker镜像到私有库。 具体步骤如下: 1. 在pom.xml文件中添加Docker Maven插件的依赖: ``` <dependency> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>${docker.maven.plugin.version}</version> </dependency> ``` 其中,${docker.maven.plugin.version}为Docker Maven插件的版本号。 2. 在pom.xml文件中添加Docker Maven插件的配置: ``` <build> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>${docker.maven.plugin.version}</version> <configuration> <imageName>your-docker-image-name</imageName> <dockerHost>http://your-docker-host:2375</dockerHost> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build> ``` 其中,your-docker-image-name为Docker镜像名称,your-docker-host为Docker主机地址。 3. 使用Maven命令打包项目,并生成Docker镜像: ``` mvn clean package docker:build ``` 4. 使用Maven命令推送Docker镜像到私有库: ``` mvn docker:push ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值