【Java架构-包管理工具】-Maven私服搭建-Nexus(三)

本文摘要

Maven作为Java后端使用频率非常高的一款依赖管理工具,在此咱们由浅入深,分三篇文章(Maven基础、Maven进阶、私服搭建)来深入学习Maven,此篇为开篇主要介绍Maven私服搭建-Nexus


文章目录

  • 本文摘要
  • [1. Nexus安装](#1. Nexus安装)
  • [2. Nexus配置](#2. Nexus配置)
  • [3. Nexus仓库类型](#3. Nexus仓库类型)
  • 4.发布依赖
    • [4.1 配置仓库用户名密码](#4.1 配置仓库用户名密码)
    • [4.2 配置上传仓库地址](#4.2 配置上传仓库地址)
    • [4.3 上传依赖](#4.3 上传依赖)
    • [4.4 查看Nexus仓库](#4.4 查看Nexus仓库)
    • [4.5 下载依赖](#4.5 下载依赖)
      • [4.5.1 setting.xml(mirror)配置](#4.5.1 setting.xml(mirror)配置)
      • [4.5.2 pom.xml(repositories)配置](#4.5.2 pom.xml(repositories)配置)
      • [4.5.3 settings.xml(profiles)配置](#4.5.3 settings.xml(profiles)配置)
  • [6. 安装三方依赖](#6. 安装三方依赖)
    • [6.1 安装至本地](#6.1 安装至本地)
    • [6.2 上传至私服](#6.2 上传至私服)

1. Nexus安装

使用Docker进行安装

  • 拉取镜像
    docker pull sonatype/nexus3
  • 启动镜像
    docker run -d -p 8081:8081 --name nexus -v /some/dir/nexus-data:/nexus-data sonatype/nexus3

2. Nexus配置

config 复制代码
# Jetty section
# 端口,可以修改
# application-port=8081
# application-host=0.0.0.0
# nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
# nexus-context-path=/${NEXUS_CONTEXT}

# Nexus section
# nexus-edition=nexus-pro-edition
# nexus-features=\
#  nexus-pro-feature
# nexus.clustered=false

3. Nexus仓库类型

  • hosted:表示用户自己上传的依赖将会上传至该仓库
  • proxy:表示代理远程仓库地址
  • group:用来组合hosted/proxy仓库,下载依赖将从该仓库下载

4.发布依赖

4.1 配置仓库用户名密码

setting.xml 文件中配置

xml 复制代码
<!-- 定义稳定版本的id名称,用户名密码 -->
<server>
  <id>releases</id>
  <username>admin</username>
  <password>admin123</password>
</server>
<!-- 定义开发版本的id名称,用户名密码 -->
<server>
  <id>snapshots</id>
  <username>admin</username>
  <password>admin123</password>
</server>

4.2 配置上传仓库地址

需要上传至径服所在项目pom.xml文件中配置

xml 复制代码
<distributionManagement>
  <repository>
    <id>releases</id>
    <url>http://nas:18081/repository/maven-releases/</url>
  </repository>
  <snapshotRepository>
    <id>snapshots</id>
    <url>http://nas:18081/repository/maven-snapshots/</url>
  </snapshotRepository>
</distributionManagement>

4.3 上传依赖

idea中点击deploy

4.4 查看Nexus仓库

4.5 下载依赖

4.5.1 setting.xml(mirror)配置

该配置方案存在问题:无法拉取SNAPSHOT依赖

xml 复制代码
<mirrors>
  <mirror>
    <!--    配置id  -->
    <id>nexus</id>
    <!--     配置拦截仓库,*表示拦截所有仓库拉取请求 -->
    <mirrorOf>*</mirrorOf>
    <name>nexus</name>
    <!--     配置仓库地址  -->
    <url>http://nas:18081/repository/maven-public/</url>
  </mirror>
</mirrors>

4.5.2 pom.xml(repositories)配置

该配置方案存在问题:该种方式只能针对某个项目下载依赖

xml 复制代码
<repositories>
  <repository>
    <id>nexus</id>
    <name>nexus</name>
    <url>http://nas:18081/repository/maven-public/</url>
    <releases>
      <enabled>true</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>
<pluginRepositories>
  <pluginRepository>
    <id>public</id>
    <url>http://nas:18081/repository/maven-public/</url>
    <name>pluginRepositories</name>
  </pluginRepository>
</pluginRepositories>

4.5.3 settings.xml(profiles)配置

该种配置方式全局配置,可以根据需求选择配置方案,生产中选择该方式

xml 复制代码
<profiles>
  <!-- 下载jar包配置 -->
  <profile>
    <!--profile的id -->
    <id>dev</id>
    <repositories>
      <repository> <!--仓库id,repositories可以配置多个仓库,保证id不重复 -->
        <id>nexus</id> <!--仓库地址,即nexus仓库组的地址 -->
        <url>http://nas:18081/repository/maven-public/</url> <!--是否下载releases构件 -->
        <releases>
          <enabled>true</enabled>
        </releases> <!--是否下载snapshots构件 -->
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
      </repository>
    </repositories>
    <pluginRepositories> <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
      <pluginRepository> <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
        <id>public</id>
        <name>Public Repositories</name>
        <url>http://nas:18081/repository/maven-public/</url>
      </pluginRepository>
    </pluginRepositories>
  </profile>
</profiles>
<!-- 选择那一个配置 -->
<activeProfiles>
  <activeProfile>dev</activeProfile>
</activeProfiles>

6. 安装三方依赖

6.1 安装至本地

bash 复制代码
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile=fastjson-1.1.37.jar -Dpackaging=jar

6.2 上传至私服

bash 复制代码
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=fastjson-1.1.37.jar -Durl=http://localhost:8079/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
相关推荐
chuanauc5 分钟前
Kubernets K8s 学习
java·学习·kubernetes
一头生产的驴21 分钟前
java整合itext pdf实现自定义PDF文件格式导出
java·spring boot·pdf·itextpdf
YuTaoShao27 分钟前
【LeetCode 热题 100】73. 矩阵置零——(解法二)空间复杂度 O(1)
java·算法·leetcode·矩阵
zzywxc78731 分钟前
AI 正在深度重构软件开发的底层逻辑和全生命周期,从技术演进、流程重构和未来趋势三个维度进行系统性分析
java·大数据·开发语言·人工智能·spring
小张是铁粉34 分钟前
oracle的内存架构学习
数据库·学习·oracle·架构
YuTaoShao3 小时前
【LeetCode 热题 100】56. 合并区间——排序+遍历
java·算法·leetcode·职场和发展
程序员张33 小时前
SpringBoot计时一次请求耗时
java·spring boot·后端
llwszx6 小时前
深入理解Java锁原理(一):偏向锁的设计原理与性能优化
java·spring··偏向锁
小马爱打代码6 小时前
微服务外联Feign调用:第三方API调用的负载均衡与容灾实战
微服务·架构·负载均衡
云泽野6 小时前
【Java|集合类】list遍历的6种方式
java·python·list