访问由ant脚本设置的常春藤中的属性值

时间:2012-07-02 09:31:53

标签: ant ivy

我有一个带有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}。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

使用antcall任务时,您可以创建新的上下文:

  

被调用的目标在新项目中运行;要知道这一点   意味着被调用目标设置的属性,引用等不会   坚持回到调用项目。

在您的示例中,您在depends目标上使用run声明,并在antcall目标上使用Get_Revision

由于上面给出的原因,antcall无法提供您想要的结果。

但是,depends会提供您想要的结果。当包含depends时,您确定您的测试场景(第二个回声)失败了吗?

BTW,env.前缀通常用于从环境变量加载的属性,如下所示:

<property environment="env"/>
<echo>${env.SOME_VAR_NAME}</echo>