[Maven] Introduction to Build Profiles

来源:互联网 发布:淘宝专享优惠券在哪里 编辑:程序博客网 时间:2024/05/16 07:22

粗糙翻译:http://maven.apache.org/guides/introduction/introduction-to-profiles.html


Apache Maven2.0竭尽全力来保证创建项目是可移植的、方便的。除了别的之外,这意味着Maven允许通过POM元素来配置创建配置信息,这样避免了所有文件系统的关联(例如继承、依赖或者其他地方),但是会更加依赖于本地仓库,用来存储所有可能需要的元数据。

但是,有时可移植性不能所有时候都是可能的。在一定的条件下,插件需要配置本地文件系统的路径。其他条件下,一些细微之处可能有差异,这样项目的工件名称可能需要进行调整。同时,你需要在创建的生命周期(依赖于检测到的创建环境)中包括整个插件。

为了处理这些情况,Maven2.0引入了创建简介。简介指定用元素的子集来说明,以多种形式被触发。他们在创建时修改POM文件,这意味着这些用来补足需要变动的参数,在不同目标的环境下。同样,简介导致的创建的结果会因组内不同人员的配置的不同而不同。然而,如果合理的运用,简介仍然能够保证项目的可移植性。这同样会减少应用-f 选项,因为这个选项允许用户创建另一个POM应用不同的参数和配置来,因此这将使得项目更容易维护,因为项目只需要一个POM文件。


profiles可以在Maven设置中被激活,通过<activeProfiles>选项,在这个部分中包含多个<activeProfile>,每个activeProfile包含一个简介id。在简介中列在<activeProfiles>标签里面的每一个被激活的将在项目应用的时候默认激活。

简介可以自动的激活,根据检测到的创建环境的状态。这些触发器被指定通过<activation>区域的配置。目前,这些检测局限于JDK版本的前缀匹配,系统属性或者系统属性的值。下面是一些例子。

下面的配置将被激活当JDK的版本号前缀以“1.4”开始(例如1。4.0——08等)

<profiles>
<span style="white-space:pre"></span><profile>
<span style="white-space:pre"></span><activation>
<span style="white-space:pre"></span><jdk>1.4</jdk>
<span style="white-space:pre"></span></activation>
<span style="white-space:pre"></span>...
<span style="white-space:pre"></span></profile></profiles>
在Maven2.1版本中区间同样可以适用例如上面的“1.4”可以修改为“【1.3,1.6)”表示可以的版本为1.3/1.4/1.5.

下面的例子将根据操作系统的配置被激活。

</pre><pre name="code" class="html"><profiles><span style="white-space:pre"></span><profile><span style="white-space:pre"></span><activation><span style="white-space:pre"></span><os>
<span style="white-space:pre"></span><name>Windows XP</name>
<span style="white-space:pre"></span><family>Windows</family>
<span style="white-space:pre"></span><arch>x86</arch>
<span style="white-space:pre"></span><version>5.1.2600</version>
<span style="white-space:pre"></span></os><span style="white-space:pre"></span></activation>
<span style="white-space:pre"></span>...<span style="white-space:pre"></span></profile></profiles>
下面的例子将在系统的属性呗配置为“debug”时激活。

<profiles><span style="white-space:pre"></span><profile><span style="white-space:pre"></span><activation>
<span style="white-space:pre"></span><property>
<span style="white-space:pre"></span><name>debug</name>
<span style="white-space:pre"></span></property><span style="white-space:pre"></span></activation>
<span style="white-space:pre"></span>...<span style="white-space:pre"></span></profile></profiles>
下面的例子将在系统属性“environment”被指定为“test”的时候被激活。

<profiles><span style="white-space:pre"></span><profile><span style="white-space:pre"></span><activation>
<span style="white-space:pre"></span><property>
<span style="white-space:pre"></span><name>environment</name>
<span style="white-space:pre"></span><value>test</value>
<span style="white-space:pre"></span></property><span style="white-space:pre"></span></activation><span style="white-space:pre"></span></profile></profiles>


POM中,那一部分可以通过简介的类型来自定义。为什么?

既然我们已经讲解了如何配置简介说明,和如何激活这些简介,那么谈一谈什么可以在简介中指定是非常有用的。和简介配置中的其他方面一样,这个答案不是那么显而易见的。

你可以根据在哪里配置你的简介来决定你在POM配置选项中有哪些权限。

Profiles在外部文件

如果简介的配置在外部文件,例如settings.xml、profiles.xml,那么这个项目是不可移植的。任何可能改变创建结果很大的都被要求配置在内部的POM简介中。像仓库类表能够简单的配置合适的工件名称,并不会改变build的结果。因此,通过外部文件,你可以改变的有<properties>/<pluginRepositories>/<proerties>三个。

<properties>这个部分允许你指定自由形式的键值对,这些将会在处理POM文件的过程中被处理。这允许你指定一个插件的配置以${profile.provided.path}这种形式来配置。






0 0