settings.xml配置详解
发布时间:2020-12-16 23:40:38 所属栏目:百科 来源:网络整理
导读:简单值 一半顶层settings元素是简单值,它们表示的一系列值可以配置Maven的核心行为:settings.xml中的简单顶层元素 settings xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation= "http:
简单值
一半顶层settings元素是简单值,它们表示的一系列值可以配置Maven的核心行为:settings.xml中的简单顶层元素
< settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" > < localRepository>/ebs1/build-machine/usr/local/hudson/hudson-home/jobs/maven-guide-< /localRepository> < interactiveMode>true< /interactiveMode> < usePluginRegistry>false</usePluginRegistry > < offline>false</offline> < pluginGroups> < pluginGroup>org.codehaus.mojo</pluginGroup > <pluginGroup>org.codehaus.cargo</pluginGroup> < /pluginGroups> ... < /settings>
这些简单顶层元素是:
服务器(Servers)
POM中的 distributionManagement元素定义了部署的仓库。然而,一些设置如安全证书不应该和 pom.xml 一起分发。这种类型的信息应该存在于构建服务器上的 settings.xml 文件中。
< servers> < server> < id>server001</id> < username>my_login</username> < password>my_password</password > < privateKey>${usr.home}/.ssh/id_dsa</privateKey > < passphrase>some_passphrase</passphrase > < filePermissions>664</filePermissions > < directoryPermissions>775</directoryPermissions > < configuration></configuration> < /server> < /servers> server下的元素包括:
镜像(Mirrors) < mirrors> < mirror> <id>repo2</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo2.maven.org/maven2/</url> < /mirror> < /mirrors>
代理(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
settings.xml 中的profile 元素是 pom.xml中 profile 元素的裁剪版本。它包含了 activation,repositories,pluginRepositories 和 properties元素。这里的profile元素只包含这四个子元素是因为这里只关心构建系统这个整体(这正是 settings.xml文件的角色定位),而非单独的项目对象模型设置。
如果一个settings中的profile被激活,它的值会覆盖任何其它定义在POM中或者profile.xml中的带有相同id的profile。
<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>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </exists> <missing>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </missing> </file> </activation> </profile> </profiles>
当所有指定的条件符合的时候,profile机会被激活,虽然大部分情况我们不会需要所有的条件。
激活(Activation)
Activation是profile的开启钥匙。如POM中的profile一样,profile的力量来自于它能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定
属性(Properties)
Maven属性和Ant中的属性一样,可以用来存放一些值。这些值可以在POM中的任何地方使用标记${X}来使用,这里X是指属性的名称。属性有五种不同的形式,并且都能在settings.xml文件中访问。
< profiles> < profile> ... < properties> < user.install>/ebs1/build-machine/usr/local/hudson/hudson-home/jobs/maven-guide-< /properties> ... < /profile> < /profiles>
仓库(Repositories)
仓库是Maven用来填充构建系统本地仓库所使用的一组远程项目。而Maven是从本地仓库中使用其插件和依赖。不同的远程仓库可能含有不同的项目,而在某个激活的profile下,可能定义了一些仓库来搜索需要的发布版或快照版构件。
<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>
插件仓库
仓库是两种主要构件的家。第一种构件被用作其它构件的依赖。这是中央仓库中存储大部分构件类型。另外一种构件类型是插件。Maven插件是一种特殊类型的构件。由于这个原因,插件仓库独立于其它仓库。 pluginRepositories 元素的结构和 repositories元素的结构类似。每个 pluginRepository 元素指定一个Maven可以用来寻找新插件的远程地址。
激活的Profile
settings.xml 中最后一需要理解的配置是 activeProfiles 元素。该元素包含了一组 activeProfile元素,每个 activeProfile 都含有一个profile id。任何在 activeProfile中定义的profile id,不论环境设置如何,其对应的profile都会被激活。如果没有匹配的profile,则什么都不会发生。例如, env-test 是一个 activeProfile,则在 pom.xml (或者profile.xml )中对应id的profile会被激活。如果运行过程中找不到这样一个profile,Maven则会像往常一样运行。
< activeProfiles> < activeProfile>env-test</activeProfile > < /activeProfiles> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |