maven私服搭建详细教程(看完必会)

news2024/12/26 0:20:49

目录

1 为什么需要私服

2 Nexus私服

2.1 Nexus下载及登录

2.2 maven仓库

 2.2.1 代理仓库

 2.2.2 宿主仓库

2.2.3 仓库组

 3 本地Maven下载构建

3.1 pom.xml方式

 3.2 镜像方式

4 本地依赖发布到私服

4.1 maven部署到nexus私服

4.1.1 快照版本

​4.1.2 release版本

4.2 手动部署依赖到私服

1 为什么需要私服

        如果在公司中多个项目模块中的的公共类用的都是一样的,那么不可能将这些一样的代码写两遍。所以将其中一个项目中的代码打包成私服,然后在另外一个模块中去进行引用。

        除此之外,如果大公司中开发人员较多,大家同时去远程仓库将依赖下载到本地,那么对公司的带宽会造成很大的压力。很有可能会造成其他的问题。所以可以在公司的局域网内部去搭建一台服务器,开发人员所有的依赖去这台服务器中去访问,如果该台服务器中也没有该依赖,那么该服务器就去远程仓库查找,然后下载到该服务器,最后在返给开发者。

优点:

      1、  加速下载速度

      2 、 加速带宽,加速项目构建速度

     3、   方便公共使用

     4、   提高maven稳定性,中央仓库需要连外网才能访问,私服只需要连内网就可以访问。

maven仓库管理软件:

Apache基金会的archiva:Archiva – The Build Artifact Repository Manager

JFrog的Artifactory:Artifactory - Universal Artifact Repository Manager - JFrog

Sonatype的Nexus:My Sonatype | Customer Platform

推荐使用第三种,本文将在windows环境下介绍这三种。

2 Nexus私服

2.1 Nexus下载及登录

注意:nexus是java开发,所以需要j保证电脑安装了java环境。

下载地址:Download

 解压后文件夹后进入bin目录

直接cmd运行: 

D:\App\nexus-3.55.0-01-win64\nexus-3.55.0-01\bin>nexus.exe /run

运行之后出现如下异常、但是不影响:

浏览器打开如下:

http://localhost:8081/

 右上角登录:

用户名:admin(默认)

密码:第一次启动时生成,(在/sonatype-work/nexus3/admin.password 文件中)  

登录之后可以进行一些修改密码等指引操作。


2.2 maven仓库

maven仓库既可以从中央仓库拉取依赖,也可以将本地依赖直接发到nexus中,那么就少不了maven中的仓库

 2.2.1 代理仓库

代理仓库主要是让用户通过代理仓库访问外部第三方仓库,如maven中央仓库、阿里的maven仓库。代理仓库会从被代理的仓库(maven中央仓库阿里的maven仓库)中下载依赖,缓存在代理仓库中以便让maven用户使用。

创建代理仓库过程:

选择 Create repository

 选择maven2(proxy)

 输入远程仓库信息:

第一个红框:仓库名称

第二个红框:Release(表示从仓库中下载稳定的构建)

第三个红框:仓库地址

 然后点击创建,完成后如下:

 2.2.2 宿主仓库

宿主仓库主要是供给自己使用:

        1、将私有的一些构建通过网页的方式上传到宿主仓库中供大家使用。

        2、将自己开发好的一些构建发布到nexus的宿主仓库中供大家使用

2.2.3 仓库组

仓库组既然是“组”的概念,说明它里面可以包含多个仓库。

因为maven用户可以从代理仓库和宿主仓库中下载构建至本地仓库,为了方便从代理仓库和宿主仓库下载构建,maven提供了仓库组。

仓库组可以包含多个宿主仓库和代理仓库,maven用户访问一个仓库组就可以访问该仓库下的所有仓库。

仓库组中的多个仓库是有顺序的,当maven用户从仓库组中下载构建时,会按顺序在仓库组中查找组件,查到了就返回给本地仓库,所以一般将速度快的放前面。

仓库组内部实际是没有内容的,只是起到一个请求转发的作用,将maven用户的下载请求转发给其它仓库处理。

nexus默认有仓库组maven-public

 打开如下:

 

 仓库组对外url:本地maven可以通过这个url从仓库组中下载构件至本地仓库

仓库组中成员:maven-releases(宿主的releases仓库版本)maven-snapshots(宿主快照版本的仓库)maven-central(maven社区的中央仓库的代理)

刚刚新增的maven-aliyun在左边,需要将它迁移到右边来,并且放在第三个位置,因为上述说过仓库组的查找是有顺序的,需要将速度快的放在前面,这个新增的仓库速度比maven-central速度要快。

如下:

 3 本地Maven下载构建

先搭建一个新项目。

找到仓库组提供的url:

3.1 pom.xml方式

 在新建项目的pom文件中加入如下内容:

  <repositories>
    <repository>
      <id>maven-nexus</id>
      <url>http://localhost:8081/repository/maven-public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

  <!--该配置是为了防止pom中的jar包从私服下载之后,但是执行mvn中从插件还是从中央仓库中下载-->
  <pluginRepositories>
    <pluginRepository>
      <id>maven-nexus</id>
      <url>http://localhost:8081/repository/maven-public/</url>
    </pluginRepository>
  </pluginRepositories>

因为nexus需要有用户名和密码才能访问,所以需要在setting.xml文件中配置账号密码:

	<server>
	  <id>maven-nexus</id>
	  <username>admin</username>
	  <password>1e1e7335-e723-441b-9876-a986b53e4130</password>
	</server>

注意:setting.xml中的id需要和pom.xml文件中配置的id一致.username和password是自己在nexus中配置的。

完整配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<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.nexus</groupId>
  <artifactId>nexus-maven</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>nexus-maven Maven Webapp</name>


  <dependencies>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.62</version>
    </dependency>
  </dependencies>

  <repositories>
    <repository>
      <id>maven-nexus</id>
      <url>http://localhost:8081/repository/maven-public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

  <!--该配置是为了防止pom中的jar包从私服下载之后,但是执行mvn中从插件还是从中央仓库中下载-->
  <pluginRepositories>
    <pluginRepository>
      <id>maven-nexus</id>
      <url>http://localhost:8081/repository/maven-public/</url>
    </pluginRepository>
  </pluginRepositories>


</project>

注意事项:

        1、 自己在pom文件中配置了私服并且也在idea的maven中配置了settings.xml文件,但是jar包还是从阿里云下载。

原因:自己电脑上有好几个setting.xml文件,默认会找到settings.xml文件,自己当初指定的的xml文件名称并不是settings.xml文件名,

解决方案:将其它的xml文件删掉或改名,并将自己指定的xml文件改名为settings.xml文件。

       2、jar包从私服下载之后,但是执行mvn中从插件还是从中央仓库中下载

原因:所有的pom文件都继承了super pom:

解决方案:在自己的pom文件中添加如下:

<pluginRepositories>
    <pluginRepository>
        <id>central</id>
        <url>http://host:port/content/groups/public(这里换成自己的私有maven仓库地址)</url>
    </pluginRepository>

执行mvn compile

从结果看出:我们的依赖已经从我们私服maven-nexus中下载了。

 3.2 镜像方式

镜像方式就不需要在pom文件中写多余的配置,主要是配置setting.xml文件

镜像配置:

		<mirror>
		  <id>maven-nexus</id>
		  <mirrorOf>*</mirrorOf>
		  <name>nexus镜像</name>
		  <url>http://localhost:8081/repository/maven-public/</url>
		</mirror>

server配置 

	<server>
	  <id>maven-nexus</id>
	  <username>admin</username>
	  <password>1e1e7335-e723-441b-9876-a986b53e4130</password>
	</server>

注意:server的id和镜像的id配置一样。

然后pom文件删除之前的配置:

<?xml version="1.0" encoding="UTF-8"?>

<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.nexus</groupId>
  <artifactId>nexus-maven</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>nexus-maven Maven Webapp</name>


  <dependencies>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.62</version>
    </dependency>
  </dependencies>

</project>

之前下载的本地仓库文件删掉,然后compile

 发现也是从我们配置的镜像去下载。

4 本地依赖发布到私服

4.1 maven部署到nexus私服

一般创建maven项目时,会有pom文件,而Pom文件会有个version元素,这个是依赖的版本号。就拿我们刚刚创建的项目来讲

 有一个1.0-SNAPSHOT,这个以-SNAPSHOT结尾的表示快照版本,叫做SNAPSHOT版本,快照版本一般不稳定,最后经过测试之后会发布一个稳定的版本,是不带SNAPSHOT后缀的。这个叫做release版本。

而nexus私服中存储用户的构建用的是宿主仓库,之前说过nexus私服提供了2个默认的宿主仓库分别用来存放SNAPSHOT版本和release版本。如下:

4.1.1 快照版本

第一步:在pom文件中添加如下:

  <distributionManagement>
    <repository>
      <id>release-nexus</id>
      <url>http://localhost:8081/repository/maven-releases//</url>
      <name>nexus私服中宿主仓库->存放/下载稳定版本的构件</name>
    </repository>
    <snapshotRepository>
      <id>snapshot-nexus</id>
      <url>http://localhost:8081/repository/maven-snapshots/</url>
      <name>nexus私服中宿主仓库->存放/下载快照版本的构件</name>
    </snapshotRepository>
  </distributionManagement>

 第二步:settings.xml文件添加如下:

	<server>
	  <id>release-nexus</id>
	  <username>admin</username>
	  <password>1e1e7335-e723-441b-9876-a986b53e4130</password>
	</server>
 
	<server>
	  <id>snapshot-nexus</id>
	  <username>admin</username>
	  <password>1e1e7335-e723-441b-9876-a986b53e4130</password>
	</server>

第三步:执行 mvn deploy

可以看到都上传到nexus的快照仓库中去了。

访问快照仓库的地址:

http://localhost:8081/repository/maven-snapshots/

如下: 

 点击browse连接:

如果需要坐标地址:直接点击pom去获取

 4.1.2 release版本

 修改pom.xml的版本号,将-SNAPSHOT去掉。如图

其它步骤和4.1.1一样,只不过地址是

http://localhost:8081/repository/maven-releases/

 最后看结果

一样是成功了,上传到我们的release库中。

4.2 手动部署依赖到私服

 手动部署只支持release版本        

 点击第一行:

 填写对应信息:

访问地址查看:

http://localhost:8081/#browse/browse:maven-releases

 

 参考文章:Maven系列第5篇:私服详解_路人甲Java的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/622583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jar包下载失败的解决方案

Jar包下载失败的解决方案 &#x1f50e;配置阿里源&#x1f50e;重新下载Jar包&#x1f50e;结尾 &#x1f50e;配置阿里源 点击 Settings 搜索 Maven 进行如下修改 注意&#x1f36d; User settings file 路径与 Local repository 路径中应尽量避免出现中文 搜索 User setti…

如何提高高层住宅的消防安全性?安科瑞 许敏

1高层住宅消防安全隐患特点 根据我国对高层住宅的规定&#xff0c;建筑高度大于54m的住宅建筑&#xff08;包括设置商业服务网点的住宅建筑&#xff09;为一类高层住宅建筑&#xff0c;建筑高度大于27m&#xff0c;但不大于54m的住宅建筑&#xff08;包括设置商业服务网点的住宅…

JAVA代码程序如何调用电商API,获取电商数据?

电商API是为了实现各个电商平台之间数据交换而提供的网络接口。Java是一种流行的编程语言&#xff0c;可以通过调用API来获得电商平台提供的各种服务&#xff0c;如商品列表、订单状态等。在这篇文章中&#xff0c;我们将详细介绍如何使用Java代码调用电商API。 1.寻找电商平台…

Python:Proportional Odds Model (POM)序分类比例几率模型

Github上你找不到 Logistic 函数求导看这里

责任链实战场景剖析、以及手写责任链

前言&#xff1a; 最早接触责任链这个设计模式&#xff0c;是我老早前看 Spring Aop 的源码的时候&#xff0c;Aop 的原理是遍历一根按照顺序装载好的 Advice&#xff08;通知&#xff09;拦截器链条&#xff0c;使Before、After 这些 Advice&#xff08;通知&#xff09;中的逻…

Accountill 使用 MongoDB、Express、React 和 Nodejs (MERN) 制作的全栈开源发票应用程序

Accountill 使用 MongoDB、Express、React 和 Nodejs (MERN) 制作的全栈开源发票应用程序。 介绍 使用 MERN 堆栈&#xff08;MongoDB、Express、React 和 Nodejs&#xff09;制作的全栈发票应用程序&#xff0c;专为自由职业者和小型企业设计&#xff0c;几乎可用于任何类型的…

职场中有哪些不成熟的表现

(点击即可收听) 大家好,这里是人人领读,今天给大家分享的,职场中有哪些不成熟的表现,希望能给大家带来一些启发. 1. 不主动汇报自己的工作进度 这个在职场当中,是非常忌讳的,一定要积极反馈,不能闷声憋着,说什么自己社恐,不敢跟上级领导交流,害怕被说 自己被分配的任务做到哪个…

仙人掌之歌——权力的游戏(4)

技术大培训 周一上午&#xff0c;陈速在工位上有些坐立不安&#xff0c;他也不知道自己在等待着什么。脑子里不可遏止地又想起上周五时&#xff0c;易伟成过来找自己说的那些没头没脑的话。易伟成先是询问直播串的参数细节&#xff0c;因为他要设计播放串加密方案&#xff0c;…

大数据架构系列:如何理解湖仓一体?

转载&#xff1a;如有侵权&#xff0c;告知即删除 引言 这十多年大数据技术蓬勃发展&#xff0c;从市场的表现来看基于大数据的数据存储和计算是非常有价值的&#xff0c;其中以云数据仓库为主打业务的公司Snowflake市值最高&#xff08;截止当前449亿美元&#xff09;&#x…

【Spring Cloud】演进与应用的分布式系统开发利器(文末赠书三本)

&#x1f338;作者简介&#xff1a;花想云&#xff0c;目前大二在读 &#xff0c;C/C领域新星创作者、运维领域新星创作者、CSDN2023新星计划导师、CSDN内容合伙人、阿里云专家博主、华为云云享专家 &#x1f338;专栏推荐&#xff1a;C语言初阶系列 、C语言进阶系列 、C系列、…

亚马逊测评养号系统是怎么操作的?

亚马逊鲲鹏测评养号系统可以注册亚马逊买家号、智能一键养号、批量绑定收货地址及支付卡、自动点击广告、货比三家后自动下单、自动留评、QA等&#xff0c;功能非常齐全&#xff0c;基本上是一款从注册到下单于一体的自动化软件。 具体操作流程是先准备好一批账号&#xff08;没…

《SIMD instruction considered harmful》SIMD指令被认为是有害的

作者&#xff1a;大卫帕特森 (David Patterson) 和安德鲁沃特曼 (Andrew Waterman)&#xff0c;2017 年 9 月 18 日 原文链接&#xff1a;SIMD Instructions Considered Harmful | SIGARCH 在撰写 《RISC-V 手册》的过程中&#xff0c;我们将 RISC-V 向量代码与 SIMD 进行了比…

创建一个 vue2.0 的项目(从0到1)的过程

1、首先&#xff1a;下载前端编码工具(如&#xff1a;VSCode) 2、其次&#xff1a;下载 node 与 npm 环境和管理&#xff1a; // 此时就说明成功安装 node 环境与 npm 管理工具&#xff1a; 3、然后&#xff1a;创建全局的 vue (如&#xff1a;vue2.0.8) 和 vue-cli 脚手架; …

Wiki.js 安装 linux(图解)

wiki.js是个开源的知识库系统&#xff0c;官方的docker安装总是出现各种问题&#xff0c; 官方也有给windows的安装包 wiki.js github 一、基础环境 1.nodejs环境 注意&#xff0c;wikijs2.0版本最高支持nodejs16 wikijs3.0支持nodejs18 参考这篇&#xff1a;nodejs编译安装…

Java爬虫通用模板它来了

Java 爬虫在实际应用中有很多场景&#xff0c;例如&#xff1a;数据挖掘和分析、搜索引擎、电商平台、数据更新、监控与预测等行业都需要爬虫借入&#xff0c;那么在实际爬虫中需要注意什么&#xff1f;又该怎么样快速实现爬虫&#xff1f;下面的文章值得看一看。 单线程java爬…

精准监测 智慧气象数据可视化大屏监测系统

前言 风云变幻&#xff0c;气象先行。天气、气候和水对公众的福祉、健康和粮食安全至关重要。 建设背景 市场背景 在全球气候变暖背景下&#xff0c;我国极端天气气候事件明显增多、强度明显增强&#xff0c;气候复杂多变&#xff0c;台风、暴雨、冰雹等灾害多发。常给人民…

网易NDH基于Impala的高性能SQL引擎建设实践

导读&#xff1a;本文将从四个方面来进行介绍。首先是分析在网易NDH中使用 Impala 过程遇到的一些痛点&#xff1b;第二个部分是基于这些痛点问题&#xff0c;我们提出了建设高性能SQL引擎的方案&#xff0c;以及这些方案是基于什么原则来创建的&#xff1b;第三个是基于这些原…

Qt使用第三方库openssl进行RSA加密解密操作详解

一、openssl库的编译,可以参考文档: https://blog.csdn.net/liang19890820/article/details/51658574/ 因为我这里使用的是windows操作系统,可以直接下载exe格式的安装文件,直接安装即可,就包含了我们需要的头文件和库文件,省去了编译操作。exe安装文件下载地址: htt…

Matlab中求解线性方程组——高斯消元法、LU分解法、QR分解法、SVD分解法、迭代法等

系列文章目录 MATLAB迭代的三种方式以及相关案例举例 MATLAB矩阵的分解函数与案例举例 MATLAB当中线性方程组、不定方程组、奇异方程组、超定方程组的介绍 MATLAB语句实现方阵性质的验证 MATLAB绘图函数的相关介绍——海底测量、二维与三维图形绘制 MATLAB求函数极限的简…

文件系统考古2:1984 - BSD Fast Filing System

今天继续与大家分享系列文章《50 years in filesystems》&#xff0c;由 KRISTIAN KHNTOPP 撰写。 我们将进入文件系统的第二个十年&#xff0c;即1984年&#xff0c;计算机由微型计算机发展到了桌面和机柜工作站&#xff0c; BSD Fast Filing System 登场。 回看第一篇&…