Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服

基于Docker搭建Maven私服

      • 1.什么是Maven私服?
      • 2.Maven私服的作用
      • 3.Maven私服的使用场景
      • 4.基于Docker搭建Maven私服
          • 4.1.下载nexus3镜像
          • 4.2.将容器内部/var/nexus-data挂载到主机/root/nexus-data目录。
          • 4.3.查看正在运行的容器的日志
          • 4.4.关闭防火墙
          • 4.5.访问Maven私服主页
          • 4.6.查看Maven私服默认的账号密码
          • 4.7.登录Maven私服(默认账号为admin)
          • 4.8.设置新的密码
      • 5.往Maven仓库上传Jar包
          • 5.1.创建新用户
          • 5.2.登录新用户的账号
          • 5.3.创建Maven仓库
          • 5.4.更改本地Maven中的settings.xml文件(添加用户账号配置)
          • 5.5.创建一个Maven项目
          • 5.6.发布Jar包
          • 5.7.更改版本号重新发布
      • 6.从Maven仓库下载Jar包
          • 6.1.另外创建一个项目
          • 6.2.删除本地Jar包
          • 6.3.下载Jar包
      • 7.测试Jar包是否可以使用
          • 7.1.在发布Jar包的Maven工程中创建一个类,然后重新发布
          • 7.2.在下载Jar包的Maven工程中创建一个类,实现调用
          • 7.3.运行CallTest类
          • 7.4.解决中文乱码的问题
          • 7.5.重新发布Jar包
          • 7.6.运行CallTest类进行测试调用

1.什么是Maven私服?

Maven私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的用户使用。当Maven需要下载构件的时候,它从私服请求,如果 私服上不存在该构件,则从外部远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第1张图片

2.Maven私服的作用

  • 节省外网带宽
  • 加速Maven构建
  • 部署第三方构件
  • 提高稳定性,增强控制
  • 降低中央仓库的负荷。

3.Maven私服的使用场景

  • 缓存企业级内部使用的jar包
  • 实现微服务接口rpc远程调用开发

4.基于Docker搭建Maven私服

4.1.下载nexus3镜像
docker pull sonatype/nexus3

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第2张图片

4.2.将容器内部/var/nexus-data挂载到主机/root/nexus-data目录。
docker run -d -p 8081:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第3张图片

4.3.查看正在运行的容器的日志

使用docker ps命令查看正在运行的容器,并使用docker attach 容器id命令查看正在运行的容器的日志

docker ps
docker attach 容器id

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第4张图片

注意:docker attach [options]命令在使用Ctrl+C退出容器时,还会将容器停止运行,如果希望退出容器时不停止运行则需要加上–sig-proxy这个参数

docker attach --sig-proxy=false 容器id
4.4.关闭防火墙
systemctl disable firewalld

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第5张图片

4.5.访问Maven私服主页

到这里说明Maven私服已经启动成功啦
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第6张图片

4.6.查看Maven私服默认的账号密码
docker ps
docker exec -it 容器id bash
cat /nexus-data/admin.password

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第7张图片

4.7.登录Maven私服(默认账号为admin)

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第8张图片

4.8.设置新的密码

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第9张图片

5.往Maven仓库上传Jar包

5.1.创建新用户

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第10张图片

5.2.登录新用户的账号

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第11张图片

5.3.创建Maven仓库

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第12张图片
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第13张图片
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第14张图片

5.4.更改本地Maven中的settings.xml文件(添加用户账号配置)
<servers>
	<server>
      <id>honeyid>
      <username>honeyusername>
      <password>honeypassword>
    server>
servers>

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第15张图片
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第16张图片

5.5.创建一个Maven项目
	<groupId>comgroupId>
    <artifactId>maven-projectartifactId>
    <version>1.0-RELEASEversion>

    
    
    <distributionManagement>
        <repository>
            
            <id>honeyid>
            <url>http://192.168.102.149:8081/repository/honey-release/url>
        repository>
    distributionManagement>

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第17张图片
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第18张图片

5.6.发布Jar包

进入命令窗口,跳转至项目地址,使用mvn deploy命令进行发布
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第19张图片
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第20张图片
发布成功后前往Maven私服页面查看Jar包是否存在
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第21张图片

5.7.更改版本号重新发布


现在可以看到Maven仓库中已经存在两个不同版本啦
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第22张图片

6.从Maven仓库下载Jar包

6.1.另外创建一个项目
	<groupId>comgroupId>
    <artifactId>maven-project-downloadartifactId>
    <version>1.0-SNAPSHOTversion>

    <dependencies>
        <dependency>
            <groupId>comgroupId>
            <artifactId>maven-projectartifactId>
            <version>2.0-RELEASEversion>
        dependency>
    dependencies>
    
	<repositories>
		<repository>
			<id>honeyid>
			<url>http://192.168.102.149:8081/repository/honey-release/url>
		repository>
	repositories>

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第23张图片
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第24张图片

6.2.删除本地Jar包

把Maven坐标引入进来时,我们可以发现,本地Maven仓库中已经存在了该Jar包,为了测试是否可以下载Jar包,我们应该把本地Maven仓库中的Jar包删除,重新下载
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第25张图片
删除Jar包后,项目已经找不到该Jar包了

6.3.下载Jar包


查看本地Maven仓库,Jar包已经成功下载啦
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第26张图片

7.测试Jar包是否可以使用

7.1.在发布Jar包的Maven工程中创建一个类,然后重新发布
package com;

/**
 * @ClassName Test
 * @Description
 * @Author honey-袁小康
 * @Date 2021/1/27 23:38
 * @Version 1.0
 */
public class Test {

    public void test() {
        System.out.println("调用方法");
    }
}

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第27张图片

7.2.在下载Jar包的Maven工程中创建一个类,实现调用
package com;

/**
 * @ClassName CallTest
 * @Description
 * @Author honey-袁小康
 * @Date 2021/1/28 0:09
 * @Version 1.0
 */
public class CallTest {

    public static void main(String[] args) {
        Test test = new Test();
        test.test();
    }
}

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第28张图片

7.3.运行CallTest类

注意:运行CallTest类后,发现控制台输出的中文是乱码的,遇到这个问题首先就可以考虑是不是发布Jar包的编码格式存在问题。
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第29张图片
查看发布Jar包时的日志:Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第30张图片

7.4.解决中文乱码的问题

在发布Jar包的Maven工程中,更改pom.xml文件(添加发布插件,并设置编译格式为UTF-8)

	<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <configuration>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-resources-pluginartifactId>
                <version>3.0.2version>
                <configuration>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>
        plugins>
    build>

7.5.重新发布Jar包

使用mvn clean deploy命令重新发布Jar包

mvn clean deploy

Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第31张图片

7.6.运行CallTest类进行测试调用

现在控制台输入的中文没有出现乱码的问题啦~~
Mr. Cappuccino的第4杯咖啡——基于Docker搭建Maven私服_第32张图片

Maven私服的搭建到此结束啦~~~

莫找借口失败,只找理由成功。

你可能感兴趣的:(Linux,docker,maven,linux,centos,运维)