我有一个带有ant脚本的build.xml文件 在build.xml中,我将属性设置为env.REVISION, 在目标内部设置的值无法在其外部访问。 例如,在以下代码中,$ {env.REVISION}设置为1.0.1.0 但目标“Get_Revision”内的回显给出了正确的值,但目标“run”内的回声并不代替版本号。 echo语句将输出作为 $ {env.REVISION}
<project name="module_name" default="run" xmlns:ivy="antlib:org.apache.ivy.ant">
...
<target name="run" description="Run" depends="Get_Revision">
<antcall target="Get_Revision" />
<echo>${env.REVISION}</echo>
<ivy:retrieve/>
</target>
<target name="Get_Revision" description ="Gets the revision number">
...
<property name="env.REVISION" value="1.0.1.0" />
<echo>${env.REVISION}</echo>
...
</target>
...
</project>
另外,我想在ivy.xml文件中使用此属性$ {env.REVISION}。
有人可以帮我解决这个问题吗?
答案 0 :(得分:3)
使用antcall任务时,您可以创建新的上下文:
被调用的目标在新项目中运行;要知道这一点 意味着被调用目标设置的属性,引用等不会 坚持回到调用项目。
在您的示例中,您在depends
目标上使用run
声明,并在antcall
目标上使用Get_Revision
。
由于上面给出的原因,antcall
无法提供您想要的结果。
但是,depends
会提供您想要的结果。当包含depends
时,您确定您的测试场景(第二个回声)失败了吗?
BTW,env.
前缀通常用于从环境变量加载的属性,如下所示:
<property environment="env"/>
<echo>${env.SOME_VAR_NAME}</echo>