zoukankan      html  css  js  c++  java
  • CentOS7-Docker 搭建Maven私服

    使用Docker搭建Maven私服

    前言
    本文主要介绍,使用Docker创建一个nexus私服,然后编写一个Library,上传到私服,然后使用demo工程依赖。

    本文不对Maven、Nexus、私服等等相关名词以及为什么要用它们进行解释,仅仅作为笔者的一次实践记录,有什么不对的欢迎评论。

    适合的读者
    适合读此篇文章的人最好符合以下条件:

    对maven有一定的认识
    想搭建maven私服但是没有经验
    对Docker有一定的使用经验
    环境
    本文环境实施是在远程Linux主机上面跑Nexus,然后本地进行开发测试。具体如下

    远程主机环境

    系统:CentOs 7.X
    OpenJDK:1.8.0_151
    Maven 3.0.5
    Docker 1.12.6
    本地环境

    系统:MacOs 10.12.6
    OpenJDK 1.8.0_152
    Maven 3.5.2
    IntelliJ IDEA 2017.3.4
    安装Nexus
    在远程主机运行一下命令:

    docker pull sonatype/nexus3

    上面命令的意思是下载一个nexus3的镜像

    继续执行:

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

    上面命令是指使用nexus3镜像创建并启动一个容器,然后指定暴露8081端口到对应主机的8081端口

    将容器内部/var/nexus-data挂载到主机/root/nexus-data目录。

    如果没有任何问题的话,Nexus应该是搭建成功了。

    还可以用命令验证容器是否安装成功

    [root@localhost ~]# docker inspect f264e5f1be41

     能够拿到这个ip地址说明启动是成功的。

    这个时候我们访问一下这个地址

    [root@localhost ~]# curl 172.17.0.2:8081
    curl: (7) Failed connect to 172.17.0.2:8081; Connection refused

    拒绝连接,说明启动还没那么快。

    关闭下防火墙

    [root@localhost ~]# systemctl stop firewalld.service

    看到如下界面,说明你的私服已经起来了

    此时在浏览器输入:http://ip:8081即可看到以下页面:(ip为远程主机的ip地址)

    点击右上方的 Sign In进行登录,初始账号密码为 admin/admin123

    这个时候登录会报一个错误,初始密码虽然是admin123,但是你就是死活登不上去,

    Incorrect username or password, or no permission to use the application.

    maven私服登录的时候不能使用明文密码,要使用密文密码,

    一般在你创建容器的目录下,登录窗口会有提示说你的密码文件在哪个位置,

    我这里是 /root/nexus-data/admin.password ,但是我进到这个目录下,

    发现并没有,于是我进到容器里面找,终于被我找到了。

    docker exec -it ae0913c1c81c bash
    cd /nexus-data/
    cat admin.password
    c481f097-4a88-4ad4-a742-0f2a12c0e2da

    c481f097-4a88-4ad4-a742-0f2a12c0e2dabash-4.2$

    一般会跟容器版本一起显示,截取前面部分就是你的maven私服密码,

    至此,登录成功,登录成功后,会提示让你修改密码,并且勾选匿名访问。

     

    Nexus会帮我们创建了几个仓库:

    可以看到默认情况下Nexus会帮我们创建了几个仓库,仔细观察红色框住的地方,里面有几种仓库的类型,解释如下:

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


    可以看到是一个proxy类型的仓库,他代理的远程仓库地址是https://repo1.maven.org/maven2/

    后退,在进入maven-public查看: 

    可以看到这是一个group类型的仓库,里面包含了maven-releases/maven-snapshots/maven-central仓库,意思是我们只需要在本地添加这个仓库,则可以依赖到上述3个仓库中的库了。

    准备工作
    为了实现本地上传代码库,并且实现依赖的示例,这里创建一个新的仓库(也可以选用已经存在的仓库)和一个用户

    创建仓库,点击Create repository,然后选择maven2(hosted)然后输入仓库名称(reason-release)。在version policy中选择这个仓库的类型,这里选择release,在Deployment policy中选择Allow redeploy(这个很重要).

    选择好之后点击创建,

    创建成功如下:

    创建用户

    点击左侧菜单栏的Users菜单,然后点击Create local user.我这里创建了一个用户,账号密码都是:jiangqiayun

     本地计算机maven的settings.xml

    <?xml version="1.0" encoding="utf-8"?>
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  
      <localRepository>D:/apache-maven-3.6.1/localRepository</localRepository>  
      <pluginGroups></pluginGroups>  
      <proxies></proxies>  
      <servers>
        <server>
            <id>reason</id>
            <username>jiangqiyuan</username>
            <password>jiangqiyuan</password>
        </server>
      </servers>  
      </mirrors>  
      <profiles></profiles>
    </settings>

    创建一个maven项目reason-test测试下

    pom.xml

    <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.reason</groupId>
      <artifactId>reason-test</artifactId>
      <version>0.0.1-RELEASE</version>
      <packaging>jar</packaging>
      <!--指定仓库地址-->
        <distributionManagement>
            <repository>
                <!--此名称要和.m2/settings.xml中设置的ID一致-->
                <id>reason</id>
                <url>http://192.168.56.200:8081/repository/reason-release/</url>
            </repository>
        </distributionManagement>
    
        <build>
            <plugins>
                <!--发布代码Jar插件-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.7</version>
                </plugin>
                <!--发布源码插件-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.2.1</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>

    注意这里版本号不能选择默认的,默认创建的是开发版本的版本号,发布的时候一定要改成0.0.1-RELEASE不然打包会出问题

    默认是0.0.1-SNAPSHOT 把后面的英文单词改一下0.0.1-RELEASE 或者其他版本号

    使用 mvn deploy

    至此测试成功,去maven私服看一下

  • 相关阅读:
    Openrasp源码分析
    feifeicms后台任意文件读取
    python之迭代器和生成器
    java之导入excel
    jquery单击事件的写法
    java之高效操作文件
    多条件搜索优化sql
    java之代码复用
    java之接口文档规范
    eclipse之常用快捷键
  • 原文地址:https://www.cnblogs.com/reasonzzy/p/11130117.html
Copyright © 2011-2022 走看看