Maven 笔记 0x05:maven 仓库 & 依赖编写注意

参考:https://www.bilibili.com/video/BV1Fz4y167p5


一般地,在 Maven 项目目录下,没有诸如 lib/ 这样用来存放依赖文件的目录。当 Maven 在执行编译或测试时,如果需要使用依赖文件,会根据 pom.xml 中的坐标来使用本地仓库中的依赖文件。

仓库分类

Maven 仓库分两大类:

  • 本地仓库
  • 远程仓库
    • 中央仓库:默认配置下,Maven 下载 jar 包的地方。
    • 私服:为节省带宽和时间,在局域网内架设私有的仓库服务器,用其代理所有外部的远程仓库,内部的项目也可部署到私服上供其他项目使用。
    • 其他公共库

当 Maven 根据坐标去寻找“依赖”(jar 包或插件)时,首先会查看本地仓库,如果在本地仓库已经存在,则直接使用(使用速度就很快);如果本地仓库中没有该“依赖”,Maven 就去远程仓库中查找,找到后,下载到本地仓库(觉得慢就是因为存在这个过程),再使用。如果本地仓库和远程仓库中都没发现要查找的“依赖”,Maven 会报错。

本地仓库

默认情况下,本地仓库在每个用户自己的用户目录下的 .m2/repository/ 中。

若想修改本地仓库目录的路径,可通过 Maven 配置文件 conf/settings.xml 来指定仓库路径。

<!-- 如果路径中斜杠为 \ ,可能会配置不成功,修改为 / 即可 -->
<settings>
    <localRepository>D:/m2/repository</localRepository>
</settings>

远程仓库

远程仓库中有 Maven 的 核心插件 和可供下载的 jar 文件。

中央仓库

原始的本地仓库是空的,Maven 必须至少有一个可用的远程仓库,才能在执行 Maven 命令时下载到需要的“依赖”(jar 包或插件)。中央仓库就是这样一个默认的远程仓库。

Maven 的安装目录下的 lib/maven-model-builder-3.8.3.jar(并不一定是3.8.3,而是当前下载安装的 maven 版本号)中的 org\apache\maven\model\ 下,有个 超级 pom(如:pom-4.0.0.xml文件),其中定义了中央仓库的网址。

中央仓库在国外,包含了2000多个开源项目,接收每天1亿次以上的访问,所以使用中央仓库来下载依赖包可能会比较慢。

当第一次运行 Maven 命令时,需要有 Internet 连接,因为它需要从网上(Maven 默认的远程仓库)下载一些文件。

私服

一般是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的 Maven 用户使用。当 Maven 需要下载 “依赖” (jar 包或插件)时,会先从私服中查找,如果私服中没有,才会从外部的远程仓库中下载,并缓存到私服上,再为 Maven 提供。

  • 与本地仓库类似,只是私服是一个远程服务器,不是本地而已。

此外,一些无法从外部下载的 “依赖” (如组织内部共享的项目)。

公司内部应建立私服的原因
  • 节省自己的外网带宽
  • 加速 Maven 构建
  • 部署第三方控件
  • 提高稳定性
  • 降低中央仓库的负荷
私服搭建

私服一般由公司搭建。关于私服搭建,网上另外搜寻教程。

私服配置方式

pom.xml 中配置:

<repositories>

    <repository>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <id>public</id>
        <name>Public Repositories</name>
        <url>http://192.168.0.96:8081/content/groups/public/</url>   <!-- 远程服务器地址-->
    </repository>
    
    <repository>
        <id>getui-nexus</id> 
        <url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
    </repository>
    
</repositories>

其他公共库

常用的阿里云仓库配置

<mirror> 
    <id>nexus-aliyun</id> 
    <mirrorOf>central</mirrorOf> 
    <name>Nexus aliyun</name> 
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

很多公司没有搭建自己的私服,都会使用阿里云仓库。阿里云仓库也是从中央仓库中,将 jar 包依赖提前缓存到阿里云仓库中。


依赖编写注意

编写错误

pom.xml 中如果出现某些 “依赖” 被标为红色(在IDEA中),很可能就是下载不成功,下载不成功主要原因:

  • 网络问题
  • 依赖写错了,本地与远程仓库中都找不到

如何查找并正确引用依赖

依赖放在 pom.xml 中的 <dependencies> 标签中,但如何确定插件(比如说 servlet)的 groupIdartifactIdversion 呢?

可以直接在搜索引擎中输入:maven repository ,查找,进入 Maven仓库的网站:

  • https://mvnrepository.com/

进入后,比如搜索:servlet

在搜索结果中,比如说第一条,点击第一条标题进入,就可以看到各种版本。如何选择版本?可以看看 Usages 这栏,看哪个版本被使用得最多,就选那个版本。

选择版本后,点击进去,就可以看到 Maven 的依赖设置方式。复制并粘贴到你项目的 pom.xml 中即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值