我有以下 Ant 构建文件 importer.xml
:
<project name="importer" basedir=".." default="build">
<import file="imported.xml"/>
<target name="build">
<!-- Do some stuff... -->
<property name="isRunningFromImporter" value="true"/>
<antcall target="run-now"/>
</target>
</project>
还有另一个构建文件 imported.xml
使用 ant-contrib 任务:
<project name="importer" basedir=".." default="build">
<!-- Most of file omitted for brevity -->
<target name="run-now">
<if>
<not-equals arg1="${isRunningFromImporter}" arg2="true"/>
<then>
<!--
This should only execute when the
isRunningFromImporter property is not true.
-->
</then>
</if>
</target>
</project>
imported#run-now
目标可以作为独立的 Ant 任务运行,例如:
ant -buildfile imported.xml run-now
在这种情况下,我不想要 <then>
已执行的条款/任务。但是,如果您运行与导入 importer.xml
相同的任务:
ant -buildfile importer.xml build
然后我想要<then>
要执行的子句/任务,但是,Ant 不允许我查看一个文件中的属性并在另一个文件中读取它。有任何想法吗?提前致谢!
最佳答案
默认情况下它会执行您想要的操作。 Antcall 的“inheritAll”属性设置为 true。
运行以下代码会回显“true”,表明该属性实际上已设置。
<project name="importer" basedir=".." default="build">
<import file="imported.xml"/>
<target name="build">
<!-- Do some stuff... -->
<property name="isRunningFromImporter" value="true"/>
<antcall target="run-now"/>
</target>
</project>
<project name="importer" basedir="..">
<!-- Most of file omitted for brevity -->
<target name="run-now">
<echo>${isRunningFromImporter}</echo>
</target>
</project>
我不熟悉<not-equals arg1="${isRunningFromImporter}" arg2="true"/>
。我一直用<not><equals ...>
反而。不等于从何而来?您确定问题不在该行吗?
关于java - Ant:在1个文件中设置属性,在另一个文件中读取它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12873267/