1

我有一个 Ant 构建文件,它在文件顶部导入以下内容:

<project name="..." ...>
    <property file="build.properties"/>
    ...

在项目根目录中,我有两个属性文件:build.propertiesspecial-config.properties. 我正在定义一个需要从中读取以下属性的目标special-config.properties

总是问=真

所以目标需要是这样的(请记住,build.properties在这个目标执行之前很久就已经设置为属性文件):

<target name="exec-special-logic">
    <!-- Somehow read special-config.properties#always.ask and set it to a local variable... -->
</target>

但我确信如何加载第二个属性文件并使其属性(例如always.ask)对 Ant 可用。提前致谢。

4

1 回答 1

3

您可以从任意数量的不同文件中读取属性,因此您可以拥有

<property file="build.properties"/>
<property file="build.properties.part2"/>

等等。在 Ant 中,为属性设置的第一个值是固定的——属性是不可变的。因此,如果您有:

<property name="my.prop" value="one" />

在第一个文件中的某处和

<property name="my.prop" value="two" />

稍后 - 也许在第二个文件中,该属性在构建期间将具有值“一”。

最近版本的一个特点是属性可以本地化到一个执行块——这让你“绕过”不变性。这是一个直接从 Ant本地任务的文档中提取的示例:

<property name="foo" value="foo"/>

<target name="step1">
    <echo>Before local: foo is ${foo}</echo>
    <local name="foo"/>
    <property name="foo" value="bar"/>
    <echo>After local: foo is ${foo}</echo>
</target>

<target name="step2" depends="step1">
    <echo>In step2: foo is ${foo}</echo>
</target>

输出

step1:
     [echo] Before local: foo is foo
     [echo] After local: foo is bar

step2:
     [echo] In step2: foo is foo
于 2013-01-30T01:02:24.587 回答