关于maven中setting.xml配置的学习

本文详细介绍了Maven项目管理工具的关键配置,包括settings.xml的作用,pom.xml的职责,如何配置代理以通过安全代理访问中央仓库,以及profiles和mirror用于管理仓库镜像和环境切换。
摘要由CSDN通过智能技术生成

Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

settings.xml 负责的是整体的构建过程, pom.xml 负责单独的项目对象构建过程。

settings.xml是maven最重要的配置,可以配置相关的元素,注意:settings配置的属性在pom也是可以引用的。Maven本身内置了一个中央仓库的地址"http://repo1.maven.org/maven2",该中央仓库包含了世界上绝大部分流行的开源项目构件,Mavne会在需要的时候去那里下载,当然也可以配置自己的中央仓库地址,去自己的中央仓库下载构件。

在idea配置maven时,需要提前将配置文件setting进行对应的编辑。

 基础元素的配置项:

 其他元素的配置项:
<proxies></proxies>  代理

需要proxy是因为很多时候你所在的公司基于安全因素考虑,要求你使用通过安全认证的代理访问因特网。这种情况下,就需要为Maven配置HTTP代理,才能让它正常访问外部仓库,以下载所需要的资源。proxies下可以配置多个proxy元素,如果声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。active为true表示激活该代理,protocol表示使用的代理协议,当然最重要的是指定正确的主机名(host)和端口(port),如果代理服务器需要认证则配置username和password,nonProxyHost元素表示指定哪些主机名不需要代理,可以用"|"分隔多个主机名,也支持通配符"*"。

<profiles></profiles>  配置    (含repository)

<profiles></profiles> 元素中包含<repository>元素,repository表示Maven的中央仓库。

我们下载maven之后,直接使用,也是可以直接下载依赖的,因为maven的安装包中已经放置了中央仓库,不同的版本路径是一样的,我安装的是3版本的,它的位置是:lib/maven-model-builder-3.5.4.jar解压中的pom.xml中。

profiles中可以声明多个repository。id必须是唯一的,尤其注意,Maven自带的中央仓库使用的id为central,如果其他仓库声明也用该id,就会覆盖中央仓库的配置。releases和snapshots比较重要,前者表示开启仓库的发布版本下载支持,后者表示关闭仓库的快照版本下载支持,这样一来,Maven就会去仓库下载发布版本的构件而不会下载快照版本的构件了。

由于中央仓库在国外,所以我们下载的速度比较慢,所以一般都会使用国内的仓库。国内一般都是用阿里的仓库。

<server></server>  认证元素

配置服务端的一些设置。大部分远程仓库无须认证就可以访问,但是有时候处于安全方面的因素考虑,需要提供认证信息才能访问一些远程仓库。如果有搭建自己公司的maven私服,公司内部会把自己的公司的公共jar包上传到maven私服中。如果私服配置了上传权限,servers标签需要给出授权信息。如:

当然如果你用的不是私服仓库或者不需要认证的话,<servers>标签中内容注释掉也是没有问题的。

<mirror></mirror>  镜像仓库

上面提到,maven下载后会自带一个中央仓库地址,这个是国外的,因为下载速度比较慢,大家常用国内aliyun的中央仓库。而mirror镜像会对仓库的请求进行过滤,也就是说当我们下载依赖的时候,如果镜像中存在,就直接从镜像中下载。

mirror不一定需要配置,在不配置镜像的情况下,maven默认会使用中央库。镜像仓库也可以配置多个,一般来说,多个 mirror 优先级,按照 id字母顺序进行排列。现在本地仓库中找,然后在第一个镜像仓库中找,找不到不到依赖才,才会去找第二个镜像仓库,最后才会去repository中配置的中央仓库中找。

  • 注意

<mirror>标签中<mirrorof>*</mirrorof>表示该配置为所有中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像。另外三个元素id、name、url与一般仓库配置无异,表示该镜像仓库的唯一标识符、名称以及地址。类似的,如果该镜像需要认证,也可以基于该id配置仓库认证。

举例:如果只是自己简单开发一个demo,可以直接套用一下这个:

<?xml version="1.0" encoding="UTF-8"?>

<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>E:\im2MavenLocal</localRepository>

    <!-- <interactiveMode>true</interactiveMode> -->
    
    <!--  <offline>false</offline> -->
    
    <pluginGroups>
        <!--  <pluginGroup>com.your.plugins</pluginGroup>  -->
    </pluginGroups>
    
    <proxies>
    <profile>
      <id>maven-repo</id>
      <repositories>
          <repository>
            <id>central</id>
            <name>central</name>
            <url>https://maven.aliyun.com/repository/central/</url>
            <releases>
              <enabled>true</enabled>
            </releases>
            <snapshots>
              <enabled>false</enabled>
            </snapshots>
          </repository>
        </repositories>
    </profile>
    </proxies>
    
    <servers>
        <!-- 
        <server>
          <id>deploymentRepo</id>
          <username>repouser</username>
          <password>repopwd</password>
        </server>
        -->

        <!-- Another sample, using keys to authenticate.
        <server>
          <id>siteServer</id>
          <privateKey>/path/to/private/key</privateKey>
          <passphrase>optional; leave empty if not used.</passphrase>
        </server>
        -->
    </servers>
    
    <mirrors>
        <!-- 可以配置多个 -->
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>https://maven.aliyun.com/repository/central</url>
        </mirror>
    </mirrors>


    <profiles>
        <!--
        <profile>
          <id>env-dev</id>
    
          <activation>
            <property>
              <name>target-env</name>
              <value>dev</value>
            </property>
          </activation>
    
          <properties>
            <tomcatPath>/path/to/tomcat/instance</tomcatPath>
          </properties>
        </profile>
        -->
    </profiles>

    <!-- 
    <activeProfiles>
      <activeProfile>alwaysActiveProfile</activeProfile>
      <activeProfile>anotherAlwaysActiveProfile</activeProfile>
    </activeProfiles>
    -->
</settings>

总结:

以上概括了maven的一些配置元素项,有助于自己对maven更好的理解。至于其他配置元素可以参考其他更多的资料。在打开idea加载项目时,maven大片报错爆红,需要检查一下maven配置是否正确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Maven 3.8.8的setting.xml配置文件是控制Maven构建工具的核心配置文件之一。它包含了一些重要的全局配置选项,可以影响到Maven构建的行为。 在Maven安装目录的conf文件夹下可以找到setting.xml文件。下面是一些常见的setting.xml配置选项: 1. 本地仓库路径:通过指定<localRepository>标签的路径,可以修改默认的本地仓库路径。例如: ```xml <localRepository>/path/to/local/repository</localRepository> ``` 2. 镜像仓库:使用<mirrors>标签可以配置镜像仓库,提供更快的构建速度。例如: ```xml <mirrors> <mirror> <id>mirrorId</id> <url>http://mirror/url</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ``` 3. 代理服务器:如果在使用Maven时需要通过代理服务器连接网络,可以通过<proxies>标签配置代理服务器。例如: ```xml <proxies> <proxy> <id>proxyId</id> <active>true</active> <protocol>http</protocol> <host>proxyHost</host> <port>proxyPort</port> <username>proxyUsername</username> <password>proxyPassword</password> </proxy> </proxies> ``` 4. 服务器认证:通过<servers>标签可以配置远程仓库的服务器认证信息,以便访问受控制的仓库。例如: ```xml <servers> <server> <id>serverId</id> <username>serverUsername</username> <password>serverPassword</password> </server> </servers> ``` 以上是一些常见的setting.xml配置选项,通过修改这些选项,可以根据项目的需求来定制Maven构建工具的行为。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值