天天看点

Docker_03_搭建maven私服

这是使用docker直接 搭建可以运行的 maven 私服

当前环境

Centos 7.7

Docker 19.03.8

jdk 1.8

maven 3.6.1

一.安装镜像

运行 nexus3 环境, 当前没有没有指定 nexus3的版本号, 所以下载的是最新版本

docker run -d -p 8000:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always -it sonatype/nexus3 /bin/bash
           

上面命令会运行一个 nexus3 环境

  1. -p : 端口 8000 映射容器中的 8081 端口;
  2. -v : /var/nexus-data 映射宿主机的目录 /root/nexus-data
  3. –restart : 设置容器的重启策略, 保证容器不会停止删除
    1. no,默认策略,在容器退出时不重启容器
    2. on-failure,在容器非正常退出时(退出状态非0),才会重启容器
    3. on-failure:3,在容器非正常退出时重启容器,最多重启3次
    4. always,在容器退出时总是重启容器
    5. unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
  4. -it : 进入终端界面 在容器内交互

首次运行的时候, 本地没有 sonatype/nexus3 会先从云端下载

二. 进入web操作界面

运行完成或, 可以使用 http://127.0.0.1:8000 来进入页面访问;

1. 登录

首次登陆点击右上角的 Sign in 按钮, 默认 账号 admin 密码为容器的 /nexus-data/admin.password 文件内,

登陆后会提示修改密码, 可以修改成自己常用的密码.

2. maven 仓库分类

Docker_03_搭建maven私服

上面页面可以看到 maven仓库分为 proxy, group, hosted 三种类型

  • proxy : 远程仓库的代理,比如说nexus配置了一个central repository的proxy,当用户向这个proxy请求一个artifact的时候,会现在本地查找,如果找不到,则会从远程仓库下载,然后返回给用户。
  • hosted : 宿主仓库(通常使用的类型),用户可以把自己的一些仓库deploy到这个仓库中
  • group : 仓库组,是nexus特有的概念,目的是将多个仓库整合,对用户暴露统一的地址,这样就不需要配置多个仓库地址。

3. 新建自己的仓库

使用下面的 Create repository 按钮新建自己的仓库

Docker_03_搭建maven私服

会首先进入下面的页面, 选择自己需要新建的仓库类型

Docker_03_搭建maven私服

A . proxy 代理模式

选择代理模式新建,

  1. 设置仓库的名称 ;
  2. 设置代理地址, 可以选择官方的, 这里选择的是阿里云的仓库地址 ;
  3. 其他设置默认即可 ;
    Docker_03_搭建maven私服
    B. hosted 宿主仓库

新建页面, 和上面相同;

  1. 设置名称;
  2. 选择 仓库保存类型 保存的是开发版本, 还是稳定版本, 或者是混合版本
    1. Release : 稳定版本 ;
    2. Snapshot : 开发版本 ;
    3. Mixed : 混合版本 ;

      **注意 : ** 这里建议使用混合版本, 如果使用稳定版本, 如果打包开发版本的jar 上传私服的时候, 有问题, 会报错.

      Docker_03_搭建maven私服

三. 项目操作

1. 修改 maven setting.xml 文件

添加 server

<servers>
  <server>
    <id>py-release</id>
    <username>admin</username>
    <password>admin</password>
  </server>
</servers>
           

2. 修改需要打包上传私服的 项目的 pom.xml 文件

主要部分是 <distributionManagement> 下的数据

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

    <groupId>com.py.common</groupId>
    <artifactId>common-utils</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <properties>
        <httpclient.version>4.5.3</httpclient.version>
        <java.version>8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.21</version>
        </dependency>
    </dependencies>

    <distributionManagement>
        <repository>
            <!--id 要与 settings.xml 中设置的id一致-->
            <id>liby-release</id>
            <url>http://py.com:8081/repository/py-release/</url>
        </repository>

        <snapshotRepository>
            <id>liby-snapshot</id>
            <url>http://py.com:8081/repository/py-snapshot/</url>
        </snapshotRepository>

    </distributionManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                    <encoding>UTF8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
           

3. 完成后就可以执行 mvn 命令了

mvn deploy
           

4. 检查

完成后如果没有报错, 可以在私有仓库里可以找到上传的项目.

Docker_03_搭建maven私服

四. 测试依赖

如果其他项目需要引入依赖 ,

在 pom.xml 文件中添加下面代码

<dependencies>
    <dependency>
        <groupId>com.py.common</groupId>
        <artifactId>common-utils</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

<repositories>
    <repository>
        <id>liby-release</id>
        <url>http://py.com:8081/repository/py-release/</url>
    </repository>
</repositories>
           
下一篇: RTMPE

继续阅读