【问题标题】:Reading Ant variables from multiple properties files从多个属性文件中读取 Ant 变量
【发布时间】:2013-01-13 17:39:40
【问题描述】:

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

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

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

always.ask=true

所以目标需要像这样某种东西(请记住,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 使用。提前致谢。

【问题讨论】:

    标签: java ant build


    【解决方案1】:

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

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

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

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

    在第一个文件中的某处和

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

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

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

    <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
    

    【讨论】:

      猜你喜欢
      • 2016-09-08
      • 2015-11-25
      • 2017-07-20
      • 2017-12-19
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      相关资源
      最近更新 更多