Nexus:一种Maven私服仓库管理器

本文Nexus使用docker-compose安装

什么是Nexus

在这里插入图片描述
在多人协作开发时,每个人写的子项目之间可能jar包需要互相依赖,两个人也许可以可以直接文件传输jar包,但是人数一多就会变得复杂

那么,如果所有人用一共公共仓库,每个人能上传自己的jar包,Maven能直接从这个公共的仓库下载下来,而且能检测其他队友项目的更新并获取下来,这不是很棒吗

这个公共仓库不同于Maven官方的仓库,是自己团队使用的,我们叫做Maven私服

Nexus就是一个强大的私服仓库管理器,极大地简化了私服仓库的维护和外部仓库的访问

依赖的下载

有了Maven私服,Maven构建时如果本地没有依赖包,那么它会去私服找,私服如果没有,就会去Maven官方找,从官方下载到私服,私服再下载到本机
在这里插入图片描述

Docker 安装 Nexus

如果不会使用Docker和docker-compose的建议补一下

  1. 创建docker-compose.yml文件内容如下
    version: '3.1'
    services:
      nexus:
        restart: always
        image: sonatype/nexus3
        container_name: nexus
        ports:
          - 8081:8081
        volumes:
          - /usr/local/docker/nexus/data:/nexus-data
    
  2. 安装时,/usr/local/docker/nexus/data目录可能会没有权限,输入下行命令赋予权限(chmod数字权限设定法
    chmod 777 /usr/local/docker/nexus/data:/nexus-data
    
  3. 登录控制台地址:http://ip:port/ 用户名:admin,新版密码不再是admin123,密码需要查看/usr/local/docker/nexus/data/admin.password文件
    在这里插入图片描述

其实docker-compose.yml可以这样写

version: '3.1'
services:
  nexus:
    restart: always
    image: sonatype/nexus3
    container_name: nexus
    ports:
      - 8081:8081
    volumes:
      - nexus-data:/nexus-data
nexus-data:

nexus-data是自己起的名字,我们可以用它指定卷组的路径,如果向上面这样不写地址的话,默认路径就在/var/lib/docker/volumes/文件夹名,文件夹名取决于你放docker-compose.yml的文件夹的名字

为私服的maven-central仓库设置阿里云镜像

镜像地址:http://maven.aliyun.com/nexus/content/repositories/central/
在这里插入图片描述在这里插入图片描述

在项目中使用 Maven 私服

配置验证信息

在 Maven settings.xml 中添加 Nexus 认证信息(servers 节点下):

<server>
  <id>nexus-releases</id>
  <username>admin</username>
  <password>密码</password>
</server>

<server>
  <id>nexus-snapshots</id>
  <username>admin</username>
  <password>密码</password>
</server>

配置自动化部署(上传)

在 pom.xml 中添加如下代码:

<distributionManagement>  
	<!-- 上传RELEASE版本的仓库 -->
  <repository>  
    <id>nexus-releases</id>  
    <name>Nexus Release Repository</name>  
    <url>http://127.0.0.1:8081/repository/maven-releases/</url>  
  </repository>  
  <!-- 上传SNAPSHOT版本的仓库 -->
  <snapshotRepository>  
    <id>nexus-snapshots</id>  
    <name>Nexus Snapshot Repository</name>  
    <url>http://127.0.0.1:8081/repository/maven-snapshots/</url>  
  </snapshotRepository>  
</distributionManagement> 

注意事项:

  • ID 名称必须要与 settings.xml 中 Servers 配置的 ID 名称保持一致。
  • 发布时会根据项目版本号中是否有SNAPSHOT,发布到Nexus的不同仓库下

配置代理仓库(下载)

在Nexus设置界面我们可以看到,maven-public仓库其实是结合了三个仓库,所以我们可以直接设置从maven-public下载,它会自动去下属的仓库中找
在这里插入图片描述

<!-- 下载RELEASE和SNAPSHOT版本的仓库 -->
<repositories>
    <repository>
        <id>nexus</id>
        <name>Nexus Repository</name>
        <url>http://127.0.0.1:8081/repository/maven-public/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
</repositories>
<!-- 下载插件的仓库 -->
<pluginRepositories>
    <pluginRepository>
        <id>nexus</id>
        <name>Nexus Plugin Repository</name>
        <url>http://127.0.0.1:8081/repository/maven-public/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>true</enabled>
        </releases>
    </pluginRepository>
</pluginRepositories>

上传到私服仓库

mvn deploy

上传第三方 JAR 包

最新版Nexus支持页面上传

在这里插入图片描述

Nexus 3.0 不支持页面上传,可使用 maven 命令:

如第三方JAR包:名字-版本号.jar

mvn deploy:deploy-file 
  -DgroupId=JAR包的groupId
  -DartifactId=JAR包的artifactId
  -Dversion=版本号
  -Dpackaging=jar 
  -Dfile=D:\名字-版本号.jar
  -Durl=私服仓库地址
  -DrepositoryId= settings.xml 中 Servers 配置的 ID 名称(授权)

注意事项:

  • 建议在上传第三方 JAR 包时,创建单独的第三方 JAR 包管理仓库,便于管理有维护。(maven-3rd)
发布了52 篇原创文章 · 获赞 9 · 访问量 6214

猜你喜欢

转载自blog.csdn.net/weixin_43553694/article/details/104409552