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

本文介绍了为何需要在公司环境中搭建Maven私服,如加速下载速度,减少带宽压力,并推荐使用Sonatype的Nexus。详细步骤包括Nexus的下载与登录,配置maven仓库(代理仓库、宿主仓库和仓库组),以及如何在本地Maven中配置使用私服,包括pom.xml方式和镜像方式。
摘要由CSDN通过智能技术生成

原文链接:maven私服搭建详细教程(看完必会) – 编程屋

目录

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文件

以上只是部分内容,为了维护方便,本文已迁移到新地址:maven私服搭建详细教程(看完必会) – 编程屋

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值