maven搭建私服

本文详细介绍如何在局域网环境下搭建Maven私服,选用Sonatype Nexus作为仓库管理软件,实现快速下载和部署第三方构件。文章包括环境准备、Nexus安装与配置、maven配置文件修改、代理库创建及项目测试等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言: 

本来想写的基础一点,可是想到如果搜索关键字是私服,应该是使用过maven,因此就不讲的太详细了

在公司真正开发环境往往都是断网或者限制,配置阿里的镜像都无法正常下载,因此想到了在局域网搭建一个专门的服务器,也就是maven私服,搭建私服以后,别人在使用的时候配置私服的镜像,由于是局域网,传输速度会很快,由于博主也刚开始学,可能有些东西也不是特别清楚,经过一天摸爬滚打终于实现了搭建私服并且可以将自己的jar包发送到私服(爬过很多坑,特记载),供他人借鉴以及方便日后查看

私服:

博主在刚开始使用maven的时候都是这样,下载解压,配环境变量,然后换一下配置文件中的镜像,就开始使用,在下载依赖以及构建项目的过程中,都是根据你配制的镜像向中央仓库请求jar包以及相关依赖

而私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。

环境

百度过,有很多专门的 Maven 仓库管理软件,比如Apache ArchivaArtifactory

我这里是别人推荐的Sonatype Nexus,这里是官网提供的新手指引

  • JDK,官网推荐的是Java8(估计6-8都可以)
  • Maven,版本没限制,一般3.x就可以
  • Nexus服务器,提供一下下载地址:Nexus3下载地址

下载不下来的,网盘下载地址链接:https://pan.baidu.com/s/1UBHw1ytJFdiZSx7de324dg  提取码:m5q4 

安装运行Nexus

安装和tomcat以及maven类似,直接解压到你想安装的目录即可

如果想要操作方便,可以将Nexus加入环境变量

Path中加入Nexus解压路径

启动Nexus

如果配置了环境变量,则直接输入

nexus /run

没有配置到cd命令到nexus安装路径下的bin文件夹然后在输入nexus /run

如果出错一般是java环境变量配置的不对或者命令输入错误,仔细检查一下

启动成功以后应该是这样

然后在浏览器中验证是否成功

在浏览器输入http://localhost:8081

出现这个页面,证明启动正常

第一次登录修改相关设置

右上角有Sign in按钮进行登录,我是3.0版本,所有默认用户名是admin,密码是admin123

之前使用了一下新版本,密码是在nexus解压目录下有个admin.password的文件,打开以后是密码,然后根据网页提示重新设定密码即可

登录成功后点击右上角Admin可以修改用户信息,比如修改密码等

这个根据自己需求进行修改

新建Maven代理库

首先修改maven配置文件,默认在User/.m2/settings.xml

官网推荐修改部分

<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <mirrors>
    <mirror>
    <!--This sends everything else to /public -->
    <id>nexus</id>
    <mirrorOf>*</mirrorOf>
    <url>http://localhost:8081/repository/maven-proxy/</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
    <id>nexus</id>
    <!--Enable snapshots for the built in central repo to direct -->
    <!--all requests to nexus via the mirror -->
    <repositories>
        <repository>
        <id>central</id>
        <url>http://central</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>true</enabled></snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
        <id>central</id>
        <url>http://central</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
    </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>

如果你没修改过配置文件,那么直接用这个代码替换掉即可

然后在Nexus页面创建自己的代理仓库

选择maven2(proxy)【代理库】

然后填写三个必填字段(新版本应该是两个)

Name:maven-proxy(可以填自己的)

Remote Storage:https://repo1.maven.org/maven2(远程仓库指向中央仓库)

Blob store :选择default即可

然后点击确定,就可以在Repositories下面看到自己刚建的仓库了

创建项目进行测试

首先查看自己代理仓库

新建一个文件夹,然后创建一个pom.xml,使用mvn package进行测试,如果提示Build Success,则证明配置成功

pom.xml文件内容如下

<?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>top.collegework</groupId>
    <artifactId>SourceCode</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
	<dependency>
    	<groupId>org.jsoup</groupId>
    	<artifactId>jsoup</artifactId>
    	<version>1.12.1</version>
	</dependency>
	
    </dependencies>
</project>

里面加入了两个依赖,一个是junit一个是jsoup,可以和最后运行结束后进行对比

然后通过cmd的cd命令进入你新建的文件夹,我的是建在E盘

e:
cd E:\RamblerDesigner\test-maven
mvn package

我的文件夹是test-maven

然后通过mvn package命令打包(正确配置maven才行)

然后在去仓库看看

发现在你的代理库中缓存了jsoup,而且版本和你填写的一致

至此证明私服配置成功!!!

一些误区

1. 当初以为既然其他人镜像配置的是我的电脑,经过实验, 请求一些包也会存在于maven-proxy那个库, 那也就是说我可以把包上传到我创建的maven-proxy库, 这样在请求的时候就不需要在下载了, 但是经过尝试发现,根本无法上传, 无论是直接打成jar包,通过mvn clean deploy -U也无法上传,期间经过各种坑, 比如账号密码的配置, 最后一步发现包的405错误,经过百度之后发现, 应该是设置的仓库没有deployment权限, 于是经过一些了查找都找不到怎么设置, 最后才知道我创建的是proxy仓库, 也就是只是一个代理, 也可以理解成是一个中转站, 而不是一个仓库

2. 设置镜像的地址,有人可能纠结到底应该写你设置的代理库的地址还是maven-public那个, 根据我一些浅显的理解

其中①是寄主仓库,存储本地上传的组件和资源的

       ③是代理仓库,用户先请求代理,如果代理仓库没有资源,则根据代理仓库配置的远程库中进行下载, 类似于中转站

       ②是仓库组, 通常包含了多个代理仓库和宿主仓库,在项目中只要引入仓库组就可以下载到代理仓库和宿主仓库中的包

           可以看一下仓库组中配置

 

 上面图片中的文字,可以看一下这个图,从别人博客上拔下来的的....

3. Release版本和snapshots,一个是发布版本,一个是快照版,具体区别,没研究过

欢迎大家关注一下,下一篇更新上传jar包到宿主仓库!!!

以后有时间会更新一下maven配置文件settings.xml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值