• maven使用


    一、maven仓库配置

    仓库优先级为:本地仓库(localRepositories) > profile中的repositories仓库 > POM > mirrors全局仓库

    1. repositories作用

    <repositories>
      <repository>
        <id>aliyun-releases</id>
        <name>阿里云仓库(name可以随便起)</name>
        <url>https://maven.aliyun.com/repository/public</url>
      </repository>
    </repositories>
    
    • 指定搜索远程仓库的地址
    • repositories标签下可以配置多个repository,如果我们配置了多个repository,maven会用哪个呢,答案是按出现顺序使用,如果第1个可用,就用第一个,如果不可用,就依次往下找
      在这里插入图片描述
      在这里插入图片描述

    上面配置时似乎也没什么用,确实是,如果你只是在pom.xml中配置个仓库,这个id是没什么用的,可以随便写,其实这个id是配合上面讲的mirror一块使用的,还记得mirrorOf吗,我们配置mirrorOf为central是,mirror中的url就是central仓库的url给覆盖了,所以这里的标签下的id是给mirrorOf用的。

    1)repositories和mirror关联

    可以看下面一个例子,本来我们的abc-releases这个仓库是不可用的,因为根本就没有https://abc.def.com/repository/public/这个仓库,但是我们通过mirror配置,改变了id为abc-releases这个仓库的url,从而使用maven也可以从id为abc-releases这个仓库下载jar包了。当然这样配置也没只啥意义,只是为了方便理解repository和mirror之间的关系。

    在这里插入图片描述

    2)maven仓库配置的其他选项

    <!--releases和snapshots中有个enabled属性,是个boolean值,默认为true,
    表示是否需要从这个远程仓库中下载稳定版本或者快照版本的构建,
    一般使用第三方的仓库,都是下载稳定版本的构建。-->
    <repository>
      <id>aliyun-releases</id>
      <url>https://maven.aliyun.com/repository/public</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    

    2. mirror作用

    • maven获取真正起作用的repository集合流程:首先会获取pom.xml里的repository集合,然后在settings.xml里找mirrors元素,
    • 如果repository的id和mirror的mirrorOf的值相同,则该mirror替代该repository,
    • 如果该repository找不到对应的mirror,则使用其本身,依此可以得到最终起作用的repository集合,
    • repositories中默认包含了中央仓库central,当然也可以重新它的url;
      可以理解mirror是复写了对应id的repository

    mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。
    没有配置mirror:
    在这里插入图片描述
    配置mirror:
    在这里插入图片描述

    A 此时,B Repository被称为A Repository的镜像。
    如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件

    settings 文件介绍

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <!-- localRepository
       | The path to the local repository maven will use to store artifacts.
       |
       | Default: ${user.home}/.m2/repository
        -->
        <!--本地仓库-->
      <localRepository>D:Maven
    epository</localRepository>
    
      <mirrors>
        <mirror>
          <id>mirrorId</id>
          <!--重定向repository中id对应的地址-->
          <mirrorOf>repositoryId</mirrorOf>
          <name>Human Readable Name for this Mirror.</name>
          <url>http://my.repository.com/repo/path</url>
        </mirror>
         -->
      </mirrors>
    
      <profiles>
         <profile>
          <id>default_profile</id>
          <repositories>
            <!--包含需要连接到远程仓库的信息 -->
            <repository>
              <!--远程仓库唯一标识 -->
              <id>public</id>
              <!--远程仓库名称 -->
              <name>自定义名称</name>
              <!--远程仓库URL,按protocol://hostname/path形式-->
              <url>https://maven.aliyun.com/repository/public</url>
              <!--如何处理远程仓库里发布版本的下载 -->
              <releases>
                <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
                <enabled>true</enabled>
                <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
                <updatePolicy>never</updatePolicy>
                <!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
                <checksumPolicy>warn</checksumPolicy>
              </releases>
              <!--如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。例如,可能有人会决定只为开发目的开启对快照版本下载的支持。参见repositories/repository/releases元素 -->
              <snapshots>
                <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
                <enabled>true</enabled>
                <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
                <updatePolicy>always</updatePolicy>
                <!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
                <checksumPolicy>warn</checksumPolicy>
              </snapshots>
              <!--用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven 2为其仓库提供了一个默认的布局;然而,Maven 1.x有一种不同的布局。我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。 -->
              <layout>default</layout>
            </repository>
          </repositories>
        </profile>
        
    	<profile>
          <id>ali_profile</id>
    	 <repositories>
    	      <repository>
    			<id>public</id>
    			<url>https://maven.aliyun.com/repository/public</url>
    			<releases>
    			<enabled>true</enabled>
    			</releases>
    			<snapshots>
    			<enabled>true</enabled>
    			</snapshots>
    		</repository>
            <repository>
    			<id>spring</id>
    			<url>https://maven.aliyun.com/repository/spring</url>
    			<releases>
    			<enabled>true</enabled>
    			</releases>
    			<snapshots>
    			<enabled>true</enabled>
    			</snapshots>
    		</repository>
    		<repository>
    			<id>spring-plugin</id>
    			<url>https://maven.aliyun.com/repository/spring-plugin</url>
    			<releases>
    			<enabled>true</enabled>
    			</releases>
    			<snapshots>
    			<enabled>true</enabled>
    			</snapshots>
    		</repository>
    		<repository>
    			<id>google</id>
    			<url>https://maven.aliyun.com/repository/google</url>
    			<releases>
    			<enabled>true</enabled>
    			</releases>
    			<snapshots>
    			<enabled>true</enabled>
    			</snapshots>
    		</repository>
    		<repository>
    			<id>gradle-plugin</id>
    			<url>https://maven.aliyun.com/repository/gradle-plugin</url>
    			<releases>
    			<enabled>true</enabled>
    			</releases>
    			<snapshots>
    			<enabled>true</enabled>
    			</snapshots>
    		</repository>
    
    		<repository>
    			<id>grails-core</id>
    			<url>https://maven.aliyun.com/repository/grails-core</url>
    			<releases>
    			<enabled>true</enabled>
    			</releases>
    			<snapshots>
    			<enabled>true</enabled>
    			</snapshots>
    		</repository>
    		<repository>
    			<id>apache snapshots</id>
    			<url>https://maven.aliyun.com/repository/apache-snapshots</url>
    			<releases>
    			<enabled>true</enabled>
    			</releases>
    			<snapshots>
    			<enabled>true</enabled>
    			</snapshots>
    		</repository>
          </repositories>
    	</profile>
      </profiles>
      
      <activeProfiles>
      <!--激活的prifile配置文件id-->
        <activeProfile>default_profile</activeProfile>
      </activeProfiles>
    </settings>
    
  • 相关阅读:
    (Vedctor经典)A
    C++ map用法
    (约瑟夫应用)5.4.1 Roman Roulette
    部分题集代码
    随机生成数
    如何在AutoCAD中实现鼠标双击事件
    浅谈JS之Error对象
    自定义微信小程序swiper轮播图面板指示点的样式
    物理像素与逻辑像素相关概念
    微信小程序中padding-right和margin-right无效
  • 原文地址:https://www.cnblogs.com/idcode/p/14551358.html
Copyright © 2020-2023  润新知