Ant 如何为变量赋值并重用它
我是Ant的新手,我有一个场景来分配我得到的当前时间[1],同时创建一个文件夹[2],并在文件中添加一些文件到文件夹[3]。因此,我需要得到我在[2]中得到的时间值。我基本上是一个java爱好者,如果它是在java中的话,只需几秒钟就可以拥有一个全局变量并重新使用它。但在这里,我不确定如何在不同的目标标记中全局重用该值。请分享你的想法 [1]Ant 如何为变量赋值并重用它,ant,Ant,我是Ant的新手,我有一个场景来分配我得到的当前时间[1],同时创建一个文件夹[2],并在文件中添加一些文件到文件夹[3]。因此,我需要得到我在[2]中得到的时间值。我基本上是一个java爱好者,如果它是在java中的话,只需几秒钟就可以拥有一个全局变量并重新使用它。但在这里,我不确定如何在不同的目标标记中全局重用该值。请分享你的想法 [1] [2] [3] :此处无法获得与上面[2]相同的current.time值 <target name="runTestResults">
[2]
[3] :此处无法获得与上面[2]相同的current.time值
<target name="runTestResults">
<copy
file="${eclipse-home}/${report}.xml"
tofile="${results}/${classname}_${current.time}/xml/${report}_${platform}.xml"
failonerror="false" />
<xslt
style="${etf-home}/plugins/${org.eclipse.test}/JUNIT.XSL"
basedir="${results}/${classname}_${current.time}/xml"
destdir="${results}/${classname}_${current.time}/html" />
<antcall target="runTestStatus" />
</target>
在Ant中,任何不在目标中的任务都会在任何目标之前执行。因此,您只需在任何目标之外设置属性
current.time
,该属性将可用于所有目标:
<project name="foo" default="some.task" basedir=".">
<tstamp>
<format property="current.time"
pattern="MM-dd-yyyy_hh-mm-ss"/>
</tstamp>
<target name="run.test.status"
depends="run.test.results">
...
</target>
<target name="run.test.results">
<property name="results.dir"
value="${results/${classname_$current.time}/xml"/>
<mkdir dir="${results.dir}"/>
<copy
file="${eclipse-home}/${report}.xml"
tofile="${results.dir}/${report}_${platform}.xml"
failonerror="false" />
<xslt
style="${etf-home}/plugins/${org.eclipse.test}/JUNIT.XSL"
basedir="${results}/${classname}_${current.time}/xml"
destdir="${results}/${classname}_${current.time}/html" />
</target>
...
在上面,时间戳是在首次执行此build.xml
时设置的,因为它不在任何目标中。现在,时间戳在所有目标中都可用
顺便说一句,我设置了属性
${results.dir}
,以便在StackOverflow中更容易读取,因为目录名会超出页面边缘。您能发布整个ant脚本吗?这可能与任务的执行顺序有关。也许runTestResults不依赖于init,所以从不调用set.timestamp
宏?
<target name="runTestResults">
<copy
file="${eclipse-home}/${report}.xml"
tofile="${results}/${classname}_${current.time}/xml/${report}_${platform}.xml"
failonerror="false" />
<xslt
style="${etf-home}/plugins/${org.eclipse.test}/JUNIT.XSL"
basedir="${results}/${classname}_${current.time}/xml"
destdir="${results}/${classname}_${current.time}/html" />
<antcall target="runTestStatus" />
</target>
<project name="foo" default="some.task" basedir=".">
<tstamp>
<format property="current.time"
pattern="MM-dd-yyyy_hh-mm-ss"/>
</tstamp>
<target name="run.test.status"
depends="run.test.results">
...
</target>
<target name="run.test.results">
<property name="results.dir"
value="${results/${classname_$current.time}/xml"/>
<mkdir dir="${results.dir}"/>
<copy
file="${eclipse-home}/${report}.xml"
tofile="${results.dir}/${report}_${platform}.xml"
failonerror="false" />
<xslt
style="${etf-home}/plugins/${org.eclipse.test}/JUNIT.XSL"
basedir="${results}/${classname}_${current.time}/xml"
destdir="${results}/${classname}_${current.time}/html" />
</target>