美文网首页
19、DockerComprose-安装nexus3

19、DockerComprose-安装nexus3

作者: 唯老 | 来源:发表于2019-10-17 23:11 被阅读0次

一、 概要

私服是一种特殊的远程Maven仓库,它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的Maven用户使用。

image
当Maven需要下载依赖的时候,先向私服请求,如果私服上不存在该依赖,则从外部的远程仓库下载,同时缓存在私服之上,然后为Maven下载请求提供下载服务,另外,对于自定义或第三方的jar可以从本地上传到私服,供局域网内其他maven用户使用。
image

二、优点

  1. 节省外网宽带
  2. 加速Maven依赖
  3. 部署第三方构件
  4. 提高稳定性、增强控制:原因是外网不稳定
  5. 降低中央仓库的负荷:原因是中央仓库访问量太大

三、搭建私服

说明

Maven私有仓库-使用docker部署Nexus

官方镜像说明

启动容器

官方说明中提到的是使用docker直接启动。我选择用docker-compose启动。
docker-compose.yml文件如下:

  • vim docker-compose.yml
    services:
      nexus:
        container_name: nexus-container
        image: sonatype/nexus3
        restart: always
        ports:
         - 8081:8081
        volumes:
         #  映射数据目录
         - ./nexus3/data/:/nexus-data
         #  映射日志目录
         - ./nexus3/log/:/nexus-data/log/
    
  • docker-compose up -d
  • docker-compose ps

注意 : 可能会出现权限问题

/nexus-data/log/karaf.log (Permission denied)

修改宿主机映射目录的权限 例如:

 # 例如我的容器卷目录  /docker/docker-compose/nexus/nexus3/data
 chmod -R 777 docker/docker-compose/nexus/nexus3/data

验证安装是否成功

在浏览器输入 http://127.0.0.1:8081

image
注意 第一次登陆的时候账号名是admin密码在在宿主机隐射的data数据卷中
image

四、访问nexus3

maven相关的仓库

  • maven-central
  • maven-releases
  • maven-snapshots
  • maven-public


    image

类型

proxy是远程仓库的代理
在nexus中配置了一个中央库的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库 下载,然后返回给用户,相当于起到一个中转的作用。
hosted是宿主仓库
用户可以把自己的一些依赖,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在中央库是获取不到的,就需要手工上传到hosted里。
group是仓库组
在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了。

五、如何发布自己的构件到私有仓库中?

配置settings文件中的节点

在~/.m2/settings或者全局config/settings中增加server节点,根据需要可以添加多个server

<servers>
  <server>
    <id>nexus-releases</id>
    <username>admin</username>
    <password>admin</password>
  </server>
   <server>
    <id>nexus-snapshots</id>
    <username>admin</username>
    <password>admin</password>
  </server>
</servers>

在pom文件中配置插件

在项目的pom.xml/build/中配置中配置maven-deploy-plugin

<!--发布到私有仓库依赖的插件-->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-deploy-plugin</artifactId>
  <version>2.8.1</version>
  <executions>
    <execution>
      <id>default-deploy</id>
      <phase>deploy</phase>
      <goals>
        <goal>deploy</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <skip>false</skip>
  </configuration>
</plugin>

温馨提示:如果在多模块项目中,可以将不需要发布的项目配置为skip=true。比如在parent的pom.xml中增加以下内容后,所有模块都会跳过发布。

<build>
  <plugins>
    <!--发布到私有仓库依赖的插件-->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-deploy-plugin</artifactId>
      <configuration>
        <skip>true</skip>
      </configuration>
    </plugin>
  </plugins>
</build>

配置distributionManagement

在项目的pom.xml中配置distributionManagement

<!--发布到私有仓库的配置-->
<distributionManagement>
  <repository>
    <id>nexus-releases</id>
    <name>nexus releases</name>
    <url>http://0.0.0.0:8081/repository/maven-releases/</url>
  </repository>
  <snapshotRepository>
    <id>nexus-snapshots</id>
    <name>nexus snapshots</name>
    <url>http://0.0.0.0:8081/repository/maven-snapshots/</url>
    <uniqueVersion>false</uniqueVersion>
    <layout>legacy</layout>
  </snapshotRepository>
</distributionManagement>

其中repository.id指~/.m2/settings.xml中配置的server.id, 这两个是同一个概念,值要一致。

  • 运行pom.xml所在目录 运行发布命令
mvn clean deploy -Dmaven.test.skip=true

六、指定使用私有仓库下载maven依赖

有两种方式,建议使用第二种方式

pom.xml文件中配置

在需要引用构件的项目中添加repository配置

<!--在项目中指定使用私有仓库或者在~/.m2/settings.xml配置全局的mirror-->
<repositories>
  <repository>
    <id>nexus-ielong</id>
    <name>ielong Nexus Repository</name>
    <url>http://0.0.0.0:18081/repository/maven-public/</url>
  </repository>
</repositories>

maven中的settings配置

在~/.m2/settings中指定mirror

    <mirrors>
        <!--不再使用aliyun的镜像-->
        <!--<mirror>
            <id>nexus-aliyun</id>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
            <mirrorOf>central</mirrorOf>
        </mirror>-->
        <!--使用自己的私有镜像-->
        <mirror>
            <id>nexus-ielong</id>
            <name>nexus public group</name>
            <url>http://0.0.0.0:8081/repository/maven-public/</url>
            <mirrorof>*</mirrorof>
        </mirror>
    </mirrors>

相关文章

网友评论

      本文标题:19、DockerComprose-安装nexus3

      本文链接:https://www.haomeiwen.com/subject/cojbmctx.html