ApacheMavensettings.xml配置详解

编程

官方配置说明:https://maven.apache.org/settings.html

settings.xml是maven的配置文件。他可以在两个级别上进行配置

1、全局配置

提供此电脑所有用户的maven配置(假设所有用户使用同一个maven)。它通常在maven的安装目录中 ${maven.home}/conf/settings.xml。

maven默认的全局配置文件包含了详细的注释和说明。

2、用户配置

提供某一个用户的maven配置。它通常在用户目录中 ${user.home}/.m2/settings.xml

创建一个用户设置最便捷的方式是,从maven安装目录复制一个全局设置进行修改。

 

注:在maven执行时会合并两个配置文件,冲突的选项会以用户设置为准。

本地仓库 localRepository

用于配置本地仓库地址默认为 ${user.home}/.m2/repository

<localRepository>/path/to/local/repo</localRepository>

用户交互 interactiveMode

设置maven是否与用户交互,默认为true 与交互。

<interactiveMode>true</interactiveMode>

访问远程库 offline

用于设置是否关闭远程库,默认为 false访问远程库。

<offline>false</offline>

添加组件 PluginGroups

为maven添加插件组

  <pluginGroups>

<pluginGroup>org.eclipse.jetty</pluginGroup>

</pluginGroups>

服务器身份认证 server

用于下载和部署的私服仓库,由POM文件中的<distributionManagement>标签定义。

但是身份认证信息(如用户名和密码)出于安全考虑,不应该与POM文件一起发布。

身份认证信息应该存在于,项目部署服务器中的settings.xml文件中。

<servers>

<server>

<id>server001</id>

<username>my_login</username>

<password>my_password</password>

<privateKey>${user.home}/.ssh/id_dsa</privateKey>

<passphrase>some_passphrase</passphrase>

<filePermissions>664</filePermissions>

<directoryPermissions>775</directoryPermissions>

<configuration></configuration>

</server>

</servers>

id:服务器id需要和pom.xml文件中<distributionManagement>的<id>保持一致。

username, password: 服务器验证的用户名和密码。

privateKey, passphrase:使用私钥和密码进行验证的方式。与username, password互斥。

filePermissions, directoryPermissions: 在部署时创建存储库文件或目录时,将使用这些权限。每个的合法值是一个与*nix文件权限相对应的三位数字,例如664或775。

例子:为pom文件中的服务器设置用户名密码

pom.xml

<distributionManagement>

<repository>

<id>releases</id>

<name>Nexus Release Repository</name>

<url>http://222.17.15.17:8081/nexus/content/repositories/releases/</url>

</repository>

<snapshotRepository>

<id>snapshots</id>

<name>Nexus Snapshot Repository</name>

<url>http://222.17.15.17:8081/nexus/content/repositories/snapshots/</url>

</snapshotRepository>

</distributionManagement>

settings.xml 

  <servers>

<server>

<id>releases</id>

<username>deployment</username>

<password>deploy100</password>

</server>

<server>

<id>snapshots</id>

<username>deployment</username>

<password>deploy100</password>

</server>

</servers>

 

镜像配置 mirrors

我们可以使用镜像替换pom或settings中现有的仓库。最常用的需求是,通过使用国内的中央仓库镜像替换默认中央仓库,从而提高下载效率。

mirrors的运行机制描述如下:

  1. Maven从pom或settings中获取 repository仓库地址列表
  2. mirror的mirrorOf的值如果与某一个repository的id相同,则使用该镜像替换原有仓库。

<mirrors>

<mirror>

<id>planetmirror.com</id>

<name>PlanetMirror Australia</name>

<url>http://downloads.planetmirror.com/pub/maven2</url>

<mirrorOf>central</mirrorOf>

</mirror>

</mirrors>

id, name: 镜像标识和名称。

url:镜像服务器地址。

mirrorOf:被镜像repository仓库id。如果要替换官方存储库则填写 “central”

例子:使用国内阿里云镜像替换中央仓库

<mirror>

<id>alimaven</id>

<name>aliyun maven</name>

<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>

<mirrorOf>central</mirrorOf>

</mirror>

代理服务器 proxies

<proxies>

<proxy>

<id>myproxy</id>

<active>true</active>

<protocol>http</protocol>

<host>proxy.somewhere.com</host>

<port>8080</port>

<username>proxyuser</username>

<password>somepassword</password>

<nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>

</proxy>

</proxies>

配置文件 profiles

此处的<profiles>元素是pom<profiles>元素的删减版。

它由 activation, repositories, pluginRepositories 和 properties元素组成。

这里的<profiles>元素只包含以上四个元素,因为他关注的是所有使用此maven的项目,而不是某一个特定项目。

这里被激活的<profiles>元素优先级要高于pom中相同id的元素。

激活 Activation

激活是<profiles>元素的关键。和pom一样,profiles的强大之处在于他只在指定情况下生效,生效的元素是通过激活元素指定的。

<profiles>

<profile>

<id>test</id>

<activation>

<activeByDefault>false</activeByDefault>

<jdk>1.5</jdk>

<os>

<name>Windows XP</name>

<family>Windows</family>

<arch>x86</arch>

<version>5.1.2600</version>

</os>

<property>

<name>mavenVersion</name>

<value>2.0.3</value>

</property>

<file>

<exists>${basedir}/file2.properties</exists>

<missing>${basedir}/file1.properties</missing>

</file>

</activation>

...

</profile>

</profiles>

当所有指定的条件都满足时,激活就会发生,尽管不是所有的条件都需要同时满足。

jdk:指定jdk版本作为激活条件。

os:指定操作系统标识作为激活条件。

property:检测到指定键值对时激活。可以在pom文件中通过 ${name}来指定键值对。

file: 指定存在某个文件作为激活条件。

激活元素不是激活profile的唯一方法。xml文件的activeProfile元素可以profile的id激活。

它们也可以在-P标志(例如-P test)之后通过逗号分隔的列表通过命令行显式地激活。

例子:使用activeProfile元素激活

  <activeProfiles>  

<activeProfile>nexus</activeProfile>

</activeProfiles>

使用-P标志激活

install -P nexus

 

要查看哪个配置文件将在某个构建中激活,请使用maven-help-plugin。

mvn help:active-profiles

属性 Properties

Maven的properties值起到占位符的功能。它们的值可以通过使用${X}符号在POM中的任何地方访问,其中X是属性标签。

properties的值支持通过五种不同的方式进行获取:

  1. env.X:  在变量前面加上“env”。将返回shell的环境变量。例如,$ {env.PATH}包含$PATH环境变量(Windows中的%PATH%)。
  2. project.x: 通过点(.)标记路径,获取pom中相应元素的值。例如:<project><version>1.0</version></project>可通过${project.version}访问。
  3. settings.x: 通过点(.)标记路径,获取settings.xml相应元素的值。例如:<settings><offline>false</offline></settings>可通过${settings.offline}访问。
  4. Java System Properties: 通过java.lang.System.getProperties()访问的所有属性都可以作为POM属性使用,比如${java.home}。 
  5. x: 在<properties />元素或外部文件中设置的值可以用作${someVar}。 

<profiles>

<profile>

...

<properties>

<user.install>${user.home}/our-project</user.install>

</properties>

...

</profile>

</profiles>

如果此属性处在激活状态,那么在POM文件中可以使用 ${user.install}进行访问。

仓库 Repositories

maven通过连接远程仓库把需要的插件和项目同步到本地仓库。本地仓库可以从多个不同的远程仓库获取需要的内容。

<profiles>

<profile>

...

<repositories>

<repository>

<id>codehausSnapshots</id>

<name>Codehaus Snapshots</name>

<releases>

<enabled>false</enabled>

<updatePolicy>always</updatePolicy>

<checksumPolicy>warn</checksumPolicy>

</releases>

<snapshots>

<enabled>true</enabled>

<updatePolicy>never</updatePolicy>

<checksumPolicy>fail</checksumPolicy>

</snapshots>

<url>http://snapshots.maven.codehaus.org/maven2</url>

<layout>default</layout>

</repository>

</repositories>

<pluginRepositories>

...

</pluginRepositories>

...

</profile>

</profiles>

  • releases, snapshots:这些是每种类型的工件、版本或快照的策略。 有了这两个集合,POM就可以独立于单个存储库中的其他类型来更改每种类型的策略。例如,可能出于开发目的,您可能决定只启用快照下载。
  • enabled: 是否为相应类型(版本或快照)启用此存储库。
  • updatePolicy: 此元素指定更新尝试发生的频率。Maven将本地POM的时间戳(存储在存储库的Maven -元数据文件中)与远程POM进行比较。选项有:always、daily(默认)、interval:X(其中X是整数,以分钟为单位)或never。 
  • checksumPolicy: 当Maven将文件部署到存储库中时,它还将部署相应的校验和文件。您可以选择 ignore, fail, or warn 检查缺少或不正确的校验和。
  • layout: In the above description of repositories, it was mentioned that they all follow a common layout. This is mostly correct. Maven 2 has a default layout for its repositories; however, Maven 1.x had a different layout. Use this element to specify which if it is default or legacy.
  • Plugin Repositories 用于配置插件仓库。

例子:指定从公司私服同步数据到本地仓库

<profile>

<id>nexus</id>

<repositories>

<repository>

<id>nexus</id>

<name>server private nexus</name>

<url>http://222.171.15.17:8081/nexus/content/groups/public/</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>true</enabled>

</snapshots>

</repository>

</repositories>

</profile>

 

激活配置文件 activeProfiles

<activeProfiles>

<activeProfile>env-test</activeProfile>

</activeProfiles>

它包含一组activeProfile元素,每个元素都有一个<profile>的id值(可以是settings或者pom中的profile)。

在activeProfile中的任何<profile>都将是激活的,不管环境设置如何。

如果没有找到匹配的<profile> id,那么就什么也不会发生。

例如,如果env-test是一个activeProfile,那么pom.xml(或具有相应id的profile.xml)中的<profile>将是激活的。

 

以上是 ApacheMavensettings.xml配置详解 的全部内容, 来源链接: utcz.com/z/513471.html

回到顶部