首页 > 其他分享 >Maven配置中pom.xml和setting.xml之间的关系

Maven配置中pom.xml和setting.xml之间的关系

时间:2023-07-31 19:22:31浏览次数:33  
标签:xml 仓库 配置 Maven 地址 pom 镜像 setting

在日常的开发中,我们拿IDEA举例,一般会在电脑上自行下载安装Maven,然后在IDEA中配置我们安装的Maven路径,通过修改setting.xml文件,例如配置公共的镜像仓库地址,来提高依赖下载速率;或者配置内部私有的镜像仓库地址,来引入一些私有的依赖等等。

1、如何从指定的镜像仓库下载依赖

如下图在项目的pom.xml文件中增加<repositories>和<repository>标签,配置指定的镜像仓库ID和url,此处配置是项目全局生效

<project>
  ...
  <repositories>
    <repository>
      <id>my-repo</id>
      <url>http://example.com/maven-repo</url>
    </repository>
  </repositories>
  ...
</project>

如果只想针对部分依赖项指定镜像仓库地址,可以如下配置:

<dependencies>
  <dependency>
    <groupId>com.example</groupId>
    <artifactId>my-library</artifactId>
    <version>1.0.0</version>
    <repositories>
      <repository>
        <id>my-repo</id>
        <url>http://example.com/maven-repo</url>
      </repository>
    </repositories>
  </dependency>
</dependencies>

注:<repositories>下可以配置多个<repository>,也就是多个镜像仓库地址,首先会在本地仓库寻找,如果本地不存在,则会按配置的远程仓库列表顺序下载(此时会在setting文件中查找对应的镜像地址),直到找到为止。

2、Maven的setting.xml文件

Maven的setting.xml文件配置结构如下,id和name随意,保持唯一即可,可以配置多个镜像地址,一般至少要配置中央仓库(central)和公司的私有镜像。

<mirrors>
    <mirror>
        <id>mirrorId</id>
        <mirrorOf>mirrorOf</mirrorOf> 
        <name>mirrorName</name>
        <url>mirrorUrl</url>
    </mirror> 
</mirrors>

注:其中的mirrorOf需要和pom文件<repository>中的id保持一致,表示仓库地址镜像。实际查找时,在setting文件中寻找和pom中的id相同的mirror,使用mirror中的url,替换掉pom文件中配置的仓库地址。

如果仓库存在认证,则可以增加如下配置,配置账号和密码,此处的<server>标签中id和pom中的<repository>标签中的id保持一致。

<settings>
  ...
  <servers>
    <server>
      <id>my-repo</id>
      <username>my-username</username>
      <password>my-password</password>
    </server>
  </servers>
  ...
</settings>

mirrorOf存在匹配规则,例如central默认是中心仓库;* 表示匹配所有仓库;使用逗号分隔的值来指定需要使用镜像仓库的多个远程仓库;或者使用"external:"来匹配所有非Maven核心仓。(external:* 是一个特殊的值,Maven 会先尝试从本地的仓库或其他已配置的镜像中获取依赖项,如果没有匹配的结果,才会尝试使用 external:* 指定的镜像)

3、依赖下载顺序

1、首先会在本地仓库查找是否存在,如果存在则直接使用

2、如果本地仓库不存在,且pom文件配置了仓库地址,则采用setting文件中配置的对应ID的镜像仓库地址,如果不存在镜像地址,则采用pom文件中配置的url。

3、如果本地仓库不存在,pom文件也未配置仓库地址,则采用setting文件中配置的中央仓库(mirrorOf=central)地址,如果不存在中央仓库地址,则会使用maven官方的中心仓库下载地址。

注:<repositories>可以配置多个仓库地址,单个的查找逻辑和上面的一样,第一个仓库不存在,则按顺序从后续仓库下载,直到下载到。

4、配置的地址无法下载或者不生效解决方法

  • 检查idea中配置的maven是否正确(自己下载的maven、setting.xml文件地址)
  • 清除本地maven仓库中下载失败的文件,一般以.lastUpdated结尾,清空文件夹即可
  • 查看pom中配置的id和setting中的mirrorOf是否对应,并验证setting.xml文件中配置镜像地址是否可以在浏览器访问
  • 如果以上都正确,可以尝试下,不要点击maven的reload按钮,直接点击maven的编译按钮,看看是否可以下载下来
  • 如果还是不生效,可以尝试清除idea的缓存,并重启idea

标签:xml,仓库,配置,Maven,地址,pom,镜像,setting
From: https://www.cnblogs.com/zhaodalei/p/17594132.html

相关文章

  • Mybatis学习(1)——mybatis介绍 & 入门案例 & 全局配置文件详解 & 增删改查 + mybatis事
    Mybatis学习(1)——mybatis介绍&入门案例&全局配置文件详解&增删改查+mybatis事务&mapper.xml文件#{}和${}&动态SQL入门原文链接:https://blog.csdn.net/Pireley/article/details/131520252目录引出一、mybatis是啥1.官网&ORM(ObjectRelationMapping)对象关......
  • Mybatis中的Mapper.xml映射文件sql查询接收多个参数 分页查询 sql语句动态生成的时候,
    Mybatis中的Mapper.xml映射文件sql查询接收多个参数分页查询sql语句动态生成的时候,使用${},sql语句中某个参数进行占位的时候用#{}原文链接:https://blog.csdn.net/Ep_Little_prince/article/details/100687848​我们都知道,在Mybatis中的Mapper.xml映射文件可以定制动态SQ......
  • Mapper.xml详解 一对一 多对一 多对多
    Mapper.xml详解Mapper.xml详解一对一多对一多对多原文链接:https://blog.csdn.net/qq_36850813/article/details/80037363 我们知道,每一款框架产品在实际开发中,都是通过XML文件来培训框架的相关流程的,MyBatis也不例外,主要有两个配置文件:config.xml和Mapper.xml,当然,这两种配......
  • C# 获取XML文件内容的多种方式
    C#获取XML文件内容的多种方式首先设定有一个xml文件Configs.xml,其内容如下:<?xmlversion="1.0"encoding="utf-8"?><Config><Devicename="aaa"><Typename="a01"func="1"></Type><Typename=&quo......
  • python xml文件修改保存
    PythonXML文件修改保存在Python中,我们可以使用各种库来处理XML文件。本文将介绍如何使用Python来修改和保存XML文件。我们将使用xml.etree.ElementTree库来解析和操作XML。整体流程下面是修改和保存XML文件的整体流程:步骤描述1加载XML文件2定位需要修改的元素......
  • How do I disable maven build when using Maven 2.0 integration for eclipse
    http://stackoverflow.com/questions/2865803/how-do-i-disable-maven-build-when-using-maven-2-0-integration-for-eclipseHowdoIstopthe"Maven2.0integration"pluginfromrunningmavenbuild,whilekeeping"buildautomatically"checked......
  • 在Mapper.xml中写复杂的动态SQL语句
    在Mapper.xml中写复杂的动态SQL语句原文链接:https://blog.csdn.net/qq_42108331/article/details/131398433说明:在三层架构开发中,使用Mybatis框架操作数据库有两种方式,一种是在Mapper类里的方法上加注解(@Select、@Insert等),另一种是在Mapper.xml文件的标签内写SQL语句。第二......
  • Maven implicit Properties(隐含变量)
    http://www.sonatype.com/books/mvnref-book/reference/resource-filtering-sect-properties.htmlMaven:TheCompleteReference9.2. MavenPropertiesPrev:9.1. IntroductionTOCNext:9.3. ResourceFiltering9.2. MavenPropertiesYoucanuseMavenproper......
  • 使用Eclipse构建Maven的SpringMVC项目
    使用Eclipse构建Maven的SpringMVC项目      首先Eclipse需要安装Maven的插件,地址:http://m2eclipse.sonatype.org/sites/m2e。     用MyEclipse安装Maven插件,建出的Maven项目有些问题。一是,发布tomcat的时候resources总是不会被发布到tomcat下;二是,把WEB-INF下的cla......
  • 遍历xml
    递归遍历xml节点 voidTravelXmlNode(QDomElement&element){QDomNodenode=element.firstChild();while(!node.isNull()){QDomElementchildElement=node.toElement();//trytoconvertthenodetoanelement.if(!childElemen......