Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从propertyfile创建Ant本地属性_Java_Ant_Build_Build Process_Ant Contrib - Fatal编程技术网

Java 从propertyfile创建Ant本地属性

Java 从propertyfile创建Ant本地属性,java,ant,build,build-process,ant-contrib,Java,Ant,Build,Build Process,Ant Contrib,我知道,由于ant1.8,可以用于当前范围 对于我的情况,我需要从propertyfile加载属性,并且我需要这些属性是本地的。例如,我的属性文件: param1=value1 param2=value2 param3=value3 . . paramN=valueN 我希望在每个目标上加载此属性文件,并希望将这些属性保持在该目标的本地 如何实现它?如果您不知道所有属性和/或不想用为每个属性枚举所有属性,我看到的唯一解决方案是在目标中使用嵌套的来加载属性,并将它们保存在本地ant上下文中(一旦

我知道,由于
ant1.8
,可以用于当前范围

对于我的情况,我需要从propertyfile加载属性,并且我需要这些属性是本地的。例如,我的属性文件:

param1=value1
param2=value2
param3=value3
.
.
paramN=valueN
我希望在每个目标上加载此属性文件,并希望将这些属性保持在该目标的本地


如何实现它?

如果您不知道所有属性和/或不想用
为每个属性枚举所有属性,我看到的唯一解决方案是在目标中使用嵌套的
来加载属性,并将它们保存在本地ant上下文中(一旦ant调用完成,其中创建的所有属性都将丢失,您无法从ant调用调用方获取这些属性)。

由于本地任务仅适用于单个属性,您可以将其扩展为适用于从propertyfile加载的一组属性。(其中一些属性现在是antcontrib的一部分,但计划的合并从未完成..)有一个类似的任务,名为,它接受一个属性,但也有一个属性文件-检查它的灵感来源(来源包含在发行版zip中)。或者使用Antelope unset任务(它与其他Antelope类没有依赖关系)创建一个范围:

<target name="foo">
<!-- loaded when target starts.. -->
<property file="foo.properties"/>
...
<!-- ..destroyed when target ends -->
<unset file="foo.properties/>
</target>

...

属性在Ant中是不可变的。因此,这种方法将真正起作用。是的,它们在其上下文中是不可变的。
(和
)创建一个新的子上下文(它可能继承或不继承自父上下文)。您可以测试它以说服自己:)了解opatry很好。现在尝试:-)antcall和ant task不会创建新的子上下文,而是创建一个全新的项目范围-过度使用会降低构建速度。Antcall自Ant 1.6以来已经过时,应该避免使用。有关详细信息,请参阅和。