maven配置文件settings.xml理解使用


在安装好maven之后,我们一般不使用maven默认的配置,比如本地仓库、阿里云私服地址等;下面的settings.xml文件的配置就是我在日常中会用到的一些配置项,仅作maven入门级参考:

localRepository:

可以指定本地仓库位置,默认本地仓库位置在${user.home}/.m2/repository下

  <localRepository>E:\work\maven\repository</localRepository>

interactiveMode:

是否需要和用户交互已获得输入,默认开启 一般不做修改,自己理解交互就是我们建maven项目的时候设置 groupId(组织名)、artifactId(构件名)、version(版本号)等信息的输入

  <interactiveMode>true</interactiveMode>

offline:

表示Maven是否需要在离线模式下运行,需要为true,默认为false。有时候公司出于安全或者网络原因,不能够连接到远程仓库,但本地依赖齐全,可以使用 (很少,基本都是有自己私服的) 因为你本地没有的依赖还是要下载,暂时没发现特别大的用处

<offline>false</offline>

pluginGroups:

在pluginGroups元素下面可以定义一系列的pluginGroup元素。表示当通过plugin的前缀来解析plugin 的时候到哪里寻找。pluginGroup元素指定的是plugin的groupId。默认情况下,Maven会自动把 org.apache.maven.plugins和org.codehaus.mojo添加到pluginGroups下 (自己暂时没使用)

  <pluginGroups>
    <pluginGroup>com.your.plugins</pluginGroup>
  </pluginGroups>

proxies:

设置通过代理访问远程仓库,有些私服仓库是不予许直接访问的

参数说明:

  • id:代理的ID,默认default
  • active:是否激活该代理,默认true
  • protocol:代理服务器的协议,默认http
  • host:代理服务器的主机
  • port:代理服务器的端口,默认8080
  • nonProxyHosts:不使用代理服务器的域名,多个域名使用|分割
  <proxies>
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
  </proxies>

servers:

当需要连接到一个私有服务器的时候需要的认证信息,主要有username/password和privateKey/passphrase这两种方式。

参数说明:

********************第一种通过用户名密码连接

  • id,这是server的id(注意不是用户登陆的id),该id与distributionManagement中repository元素的id相匹配
  • username,鉴权用户名
  • password,鉴权密码

********************第二种通过秘钥连接

  • 私钥位置和指定了一个私钥的路径(默认是${user.home}/.ssh/id_dsa)。
  • privateKey,私钥位置
  • passphrase,私钥密码
  • filePermissions,文件被创建时的权限。如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(permission)。这两个元素合法的值是一个三位数字,其对应了unix文件系统的权限,如664,或者775。
  • directoryPermissions,目录被创建时的权限。
  <servers>
    <server>
      <id>deploymentRepo</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>

    <server>
      <id>siteServer</id>
      <privateKey>/path/to/private/key</privateKey>
      <passphrase>optional; leave empty if not used.</passphrase>
    </server>
  </servers>

mirrors:

用于定义一系列的远程仓库的镜像。我们可以在pom中定义一个下载工件时候所使用的远程仓库。但有时候这个远程仓库会比较忙,所以这个时候人们就想着给它创建镜像以缓解远程仓库的压力,也就是说会把对远程仓库的请求转换到对其镜像地址的请求。每个远程仓库都会有一个id,这样我们就可以创建自己的mirror来关联到该仓库,那么以后需要从远程仓库下载工件的时候Maven就可以从我们定义好的mirror站点来下载,这可以很好的缓解我们远程仓库的压力。在我们定义的mirror中每个远程仓库都只能有一个mirror与它关联,也就是说你不能同时配置多个mirror的mirrorOf指向同一个repositoryId。(私服)

参数说明:

  • id,用来区别mirror的,所有的mirror不能有相同的id
  • mirrorOf,用来表示该mirror是关联的哪一个仓库,其值为其关联仓库的id。当要同时关联多个仓库时,这多个仓库之间可以用逗号隔开;当要关联所有的仓库时,可以使用“”表示;当要关联除某一个仓库以外的其他所有仓库时,可以表示为“,!repositoryId”;当要关联不是localhost或用file请求的仓库时,可以表示为“external:*”(最后一种没使用过)。
  • name,自定义名称
  • url,表示该镜像的url。当Maven在建立系统的时候就会使用这个url来连接到我们的远程仓库。例如:阿里云:http://maven.aliyun.com/nexus/content/groups/public
 <mirrors>
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
  </mirrors>

profiles:

用于指定一系列的profile。当一个profile在settings.xml中是处于活动状态并且在pom.xml中定义了一个相同id的profile时,settings.xml中的profile会覆盖pom.xml中的profile

参数说明:

  • id,配置的唯一标识符

activation:

  • activeByDefault,当其值为true的时候表示如果没有其他的profile处于激活状态的时候,该profile将自动被激活。
  • jdk,表示jdk的版本满足条件的时候激活,在这里是1.4。版本指定还可以用一个范围来表示,例如:[1.4,1.8) 符合开闭区间原则,例子中为1.4,1.5,1.6,1.7,则[1.4,1.8]为1.4,1.5,1.6,1.7,1.8
  • os,表示当操作系统满足条件的时候激活(一般项目不做限制)
  • property,表示当Maven检测到了这样一个键值对的时候就激活该profile (例如下面代码中的可以在执行命令中:mvn compile –DmavenVersion=1.0.0)
  • file,表示当文件存在或不存在的时候激活,exists表示存在,missing表示不存在。如下面的例子表示当文件config/application-pro.yml存在的时候激活该profile

properties:

当该profile是激活状态的时候,properties下面指定的属性都可以在pom.xml中使用(具体未使用过,有人了解可以评论下自己也学习下)

 <profiles>
        <profile>
            <id>alimaven</id>
			<activation>
			  <activeByDefault>false</activeByDefault>
			  <jdk>1.4</jdk>
			  <os>
			    <name>Windows 7</name>
				<family>Windows</family>
				<arch>x86</arch>
				<version>5.1.2600</version>
			  </os>
			  <property>
				<name>mavenVersion</name>
				<value>1.0.0</value>
			  </property>
			  <file>
				<exists>config/application-pro.yml</exists>
			  </file>
			</activation>
            <properties>
               <tomcatPath>/path/to/tomcat/instance</tomcatPath>
            </properties>
  </profiles>

repositories:

定义远程仓库的地址,包含一系列的repository元素,当对应profile激活状态时,作为pom的远程仓库,是用来配置maven项目的远程仓库。例如,定义一个maven的远程仓库,图为阿里maven私服地址信息。

  • id,指定远程仓库的唯一标识符
  • name,远程仓库名称
  • url,远程仓库地址。例如:阿里云:http://maven.aliyun.com/nexus/content/groups/public
  • releases、snapshots:这是对于工件的类型的限制,一般来说snapshots版本代表正在开发中的版本,release代表比较稳定的发布版本,
    • enabled,表示这个仓库是否允许这种类型的工件,
    • updatePolicy,表示多久尝试更新一次。可选值有always、daily、interval:minutes(表示每多久更新一次)和never (自己在实际中未使用过)
    • checksumPolicy,表示当这个校验文件缺失或不正确的时候该如何处理,可选项有ignore、fail和warn (自己在实际中未使用过)

在这里插入图片描述

pluginRepository:

配置maven插件的远程仓库地址,其他属性和repositories一样使用,如下示例

小结:如果配置了repositories而没有配置pluginRepository,那么在创建maven项目下载时会发现,那些插件还是会从maven中央仓库去下载,而不是我们配置激活的阿里地址,这就是我所以理解的pluginRepository的意义吧

 <profiles>
            <repositories>
                <repository>
                    <id>alimaven</id>
                    <name>aliyun maven</name>
                    <url>https://maven.aliyun.com/repository/central</url>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>alimaven</id>
                    <name>aliyun maven</name>
                    <url>https://maven.aliyun.com/repository/central</url>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                </pluginRepository>
            </pluginRepositories>
        </profile>
  </profiles>

activeProfiles:

包含一系列的activeProfile元素,表示对于所有的pom都处于活跃状态的profile,activeProfile中填写profile中配置的id

  <activeProfiles>
    <activeProfile>alwaysActiveProfile</activeProfile>
    <activeProfile>anotherAlwaysActiveProfile</activeProfile>
  </activeProfiles>

新手自学分享,有错误地方望指点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值