【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
相关推荐
xmh-sxh-13142 分钟前
常用的前端框架有哪些
java
老马啸西风6 分钟前
NLP 中文拼写检测纠正论文 A Hybrid Approach to Automatic Corpus Generation 代码实现
java
小蒜学长8 分钟前
基于Spring Boot的宠物领养系统的设计与实现(代码+数据库+LW)
java·前端·数据库·spring boot·后端·旅游·宠物
L.S.V.8 分钟前
Java 溯本求源之基础(三十一)——泛型
java·开发语言
Redamancy_Xun15 分钟前
开源软件兼容性可信量化分析
java·开发语言·程序人生·网络安全·测试用例·可信计算技术
IDRSolutions_CN22 分钟前
(教程)用 Java 从 PDF 中提取嵌入的文件
java·经验分享·pdf·软件工程·团队开发
海波东25 分钟前
单例模式懒汉式、饿汉式(线程安全)
java·安全·单例模式
lwprain37 分钟前
解决tomcat双击startup.bat乱码的几种方法
java·tomcat
m0_748246611 小时前
ARM 架构--通用寄存器状态寄存器控制寄存器特殊用途寄存器
arm开发·架构
风染yeye1 小时前
计算机体系结构期末复习3:GPU架构及控制流问题
架构·硬件架构·设计规范