配置文件的范围依赖
Maven配置文件共有三个层次,层次越低影响的范围越大。配置文件所处层次从低到高依次为:
- 机器级配置文件:<安装目录>/conf/setting.xml 机器级的配置,影响到整台机器
- 用户级配置文件:C:\Users\<用户名>\.m2\setting.xml 用户级的配置,影响到特定登录用户
- 项目级配置文件:项目pom.xml 项目级的配置,影响到当前项目
因为,随着Maven版本的升级,在Maven安装目录中的机器级配置文件就会被覆盖了,所以为了方便Maven升级,一般不去动机器级的配置文件。
把一些本地化,个性化的设置在用户级配置文件中设置,这样易于共用,方便维护。
配置文件的继承依赖
pom.xml配置文件中可通过<parent>进行配置文件的继承依赖,如下所示:
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
这个继承依赖是可以多层级的,如果一个项目有多个子项目,将这些子项目中的相同配置项定义在一个父配置文件中,将大大简化子项目的pom.xml
配置文件中的元素依赖
<repository>和<server>
<repository>是仓库,仓库位于一个server中。一般情况下,<repository>在pom.xml中定义,而<server>中用户级的setting.xml中定义。这是由于,<server>中定义用户认证信息,一方面来说,这些信息是共用的,另一方面来说,这些信息是要保密的,不公开,所以不宜放在项目级的pom.xml中。
在用户级的setting.xml中定义<server>
<servers>
<server>
<id>sonatype-nexus-snapshots</id>
<username>user1</username>
<password>password1</password>
</server>
<server>
<id>sonatype-nexus-staging</id>
<username>user2</username>
<password>password</password>
</server>
</servers>
在项目级的pom.xml中定义<repository>
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name> <url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
注意,这里通过
“<id>sonatype-nexus-snapshots</id>”引用setting.xml中定义的<server>。即说明,这个仓库访问时,自动使用<sever>定义的用户和密码进行访问。