当前位置: 首页 > article >正文

Maven配置元素详解

Maven配置元素详解

localRepository

  • 指定 Maven 本地仓库的路径,Maven 会将从远程仓库下载的依赖构件(如 JAR 文件、WAR 文件等)存储在本地仓库中,这样在后续的项目构建过程中,如果需要相同的构件,就可以直接从本地仓库获取,而不必再次从远程下载,从而提高构建效率。

  • <localRepository>C:/Users/user/.m2/repository</localRepository>
    

offline

  • 控制 Maven 是否工作在离线模式。如果设置为true这在没有网络连接或者想要确保构建过程不受远程仓库变化影响的情况下非常有用。

  • <offline>false</offline>
    

pluginGroups

  • 定义插件组。Maven 插件组是一组相关插件的集合。通过在settings.xml中定义插件组,在命令行使用插件时可以更简洁地引用插件

  • <pluginGroups>
      <pluginGroup>org.apache.maven.plugins</pluginGroup>
      <pluginGroup>org.codehaus.mojo</pluginGroup>
    </pluginGroups>
    

proxies

  • 用于配置代理服务器信息。当你的网络环境需要通过代理服务器才能访问外部网络(如访问远程仓库)时,需要在这个元素中设置代理的相关参数,包括代理服务器的主机名、端口号、协议类型、用户名和密码(如果需要)。

  • <proxies>
      <proxy>
        <id>myproxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <host>proxy.example.com</host>
        <port>8080</port>
        <username>proxyuser</username>
        <password>proxypassword</password>
      </proxy>
    </proxies>
    

servers

  • 用于配置服务器认证信息。当 Maven 需要访问受保护的远程仓库(如私有仓库)时,会使用在这里配置的用户名和密码进行认证。

  • <servers>
      <server>
        <id>private - repo</id>
        <username>your - username</username>
        <password>your - password</password>
      </server>
    </servers>
    

mirrors

  • 配置远程仓库的镜像。镜像实际上是远程仓库的一个副本,Maven 可以配置从镜像站点下载构件,这样可以加快下载速度(例如镜像服务器在本地网络内,带宽较大)或者在原始仓库不可用的情况下提供备用下载地址。

  • <mirrors>
      <mirror>
        <id>my - mirror</id>
        <mirrorOf>central</mirrorOf>
        <name>My Central Mirror</name>
        <url>http://my - mirror - url/repository</url>
      </mirror>
    </mirrors>
    

profiles

  • 可以根据不同的环境(如开发环境、测试环境、生产环境, 通过activation指定用哪个环境)来配置不同的 Maven 行为。一个profile可以包含仓库配置、插件仓库配置、属性配置等多种信息,通过激活不同的profile,可以使 Maven 在不同环境下使用不同的配置进行项目构建。

  • <profiles>
      <profile>
        <id>development</id>
        <activation>
          <activeByDefault>true</activeByDefault>
        </activation>
        <repositories>
          <repository>
            <id>dev - repo</id>
            <url>http://dev - repository - url</url>
          </repository>
        </repositories>
        <pluginRepositories>
          <pluginRepository>
            <id>dev - plugin - repo</id>
            <url>http://dev - plugin - repository - url</url>
          </pluginRepository>
        </pluginRepositories>
      </profile>
    </profiles>
    
  • 或者在这里插入图片描述

repositories

在pom.xml和settings.xml中的位置与区别

  • 在pom.xml中的使用

    • 这种方式可以为每个项目单独定制仓库配置,使得不同的项目可以使用不同的仓库来满足其特定的需求。

    • <project>
        <repositories>
          <repository>
            <id>my - repo</id>
            <url>http://my - repository - url</url>
          </repository>
        </repositories>
        <!-- 其他项目配置元素 -->
      </project>
      
  • 在settings.xml中的使用

    • 通过settings.xml中的repository配置,可以实现对多个项目的构建环境进行统一管理。

    • settings.xml文件中,repository元素通常是在profile元素内部定义的。这样可以根据不同的环境(如开发环境、测试环境、生产环境)配置不同的仓库。例如:

    • <settings>
        <profiles>
          <profile>
            <id>development</id>
            <repositories>
              <repository>
                <id>dev - repo</id>
                <url>http://dev - repository - url</url>
              </repository>
            </repositories>
            <!-- 其他profile配置元素 -->
          </profile>
        </profiles>
        <!-- 其他settings配置元素 -->
      </settings>
      
    • repository 下的 releases 和snapshots

      • Releases:用于存放正式发布版本的构件
      • Snapshots:是存放开发过程中的快照版本构件的地方
    • <repository>
          <id>my - repo</id>
          <url>http://my - repository - url</url>
          <releases>
              -- enabled为true允许下载快照版本
              <enabled>true</enabled>
              <updatePolicy>daily</updatePolicy>
          </releases>
          <snapshots>
              <enabled>true</enabled>
              <updatePolicy>always</updatePolicy>
          </snapshots>
      </repository>
      
    • 更新策略(updatePolicy)详解

      • always

        • 对于snapshots来说,这意味着 Maven 在每次构建项目时都会尝试从仓库中获取最新的快照版本。这在开发过程中很有用,因为开发人员可能会频繁地更新快照版本,这样可以确保项目总是使用最新的开发成果。
        • 但对于releases,这种策略不太常用,因为正式发布版本一般比较稳定,不需要每次构建都检查更新。如果releases设置为always更新策略,可能会导致构建过程变慢,并且可能会引入未经充分测试的版本。
      • daily

        • 适用于releases的一种常见更新策略。它表示 Maven 每天会检查一次仓库,看是否有该构件的新版本发布。如果有更新,会在构建项目时下载新的版本。这种策略在保证项目使用较新的稳定版本的同时,又不会过于频繁地检查更新,节省了网络资源和构建时间。
        • 对于snapshots,如果设置为daily,可能会导致项目无法及时获取开发人员最新提交的快照版本,因为它不会在每次构建时都检查更新。
      • interval:X(X 为具体数字)

        • 表示 Maven 每隔 X 分钟检查一次仓库更新。例如,updatePolicy="interval:30"意味着 Maven 每 30 分钟检查一次是否有新的构件版本。这种策略可以根据具体的项目需求和构件更新频率来灵活设置。
        • 无论是releases还是snapshots都可以使用这种策略,通过调整间隔时间来平衡更新及时性和构建效率。
      • never

        • 当设置为never时,Maven 不会主动检查该部分(releasessnapshots)的构件是否有更新。只有在本地仓库中不存在该构件时,才会从远程仓库下载。这种策略适用于那些对版本稳定性要求极高,并且不希望受到远程仓库更新影响的场景。

重点理解内容

  • mirror 是指定镜像仓库, 里面的id 其实没有什么特别的意思, 只是为了区分不同的mirror, url指定镜像仓库的地址, mirrorOf 可以理解为镜像仓库的名字, 可以自己取. 这个mirrorOf 在哪里会用到呢, 在profile下的repository有一个id,这个就指向mirrorOf, 如果对应上了, 第三方jar包就不会再repository中的url中下载镜像, 而是在mirror中对应的url下载镜像, 如果repository的id没有匹配上mirrors下的所有mirrorOf, 那么, 就直接在repository下的url下载镜像
  • 可以配置多个mirror元素,并且一个mirrorOf属性可以有多种取值方式来匹配不同的仓库情况。
  • 例如,mirrorOf可以取值为*,这表示这个镜像可以作为所有远程仓库的镜像。不过这种情况需要谨慎使用,因为可能会导致一些意想不到的下载行为。
  • 另外,mirrorOf还可以是多个仓库id用逗号分隔的形式,如mirrorOf = "repo1,repo2",表示这个镜像可以作为repo1repo2仓库的镜像。在这种情况下,只要profile(或pom.xml)中repositoryidrepo1或者repo2,就会使用这个镜像。

http://www.kler.cn/a/396346.html

相关文章:

  • Shell基础2
  • 麒麟kysec安全
  • 鸿蒙 管理应用拥有的状态有Localstorage、Appstorage、PersistentStorage、Environment、用户首选项、持久化方案。
  • UNIX网络编程-TCP套接字编程(实战)
  • 制作图片马常用的五种方法总结
  • MFC工控项目实例三十实现一个简单的流程
  • MATLAB中的绘图技巧
  • 高并发下如何保障系统的正确性?性能与一致性博弈的技术探索
  • ⾃动化运维利器 Ansible-Jinja2
  • 【MySQL】索引原理及操作
  • 如何用Python爬虫精准获取商品历史价格信息及API数据
  • sql server into #t2 到临时表的几种用法
  • 8 软件项目管理
  • JavaScript 自动化软件:AutoX.js
  • 入门车载以太网(4) -- 传输层(TCP\UDP)
  • django入门【05】模型介绍(二)——字段选项
  • Java-Redisson分布式锁+自定义注解+AOP的方式来实现后台防止重复请求扩展
  • 用户态协议栈与内核模块通信机制
  • mac终端使用pytest执行iOS UI自动化测试方法
  • 引领豪华MPV新趋势,比亚迪夏内饰科技广州车展全球首发
  • 【C#设计模式(6)——适配器模式(Adapter Pattern)】
  • HelloMeme 上手即用教程
  • MySQL 如何用C语言连接
  • 角谷猜想的步数
  • JMX Exporter源码解读+生产环境最佳实践+解决其抓取指标超时问题
  • 关于adb shell登录开发板后terminal显示不完整