环境变量未在Ant文件中读取

时间:2014-06-16 14:04:11

标签: java ant environment-variables .bash-profile

我有一个外部SDK,我需要在我的ant文件中设置路径。由于在我们Dev的每个环境中都可能有所不同,因此我们通过环境变量进行设置。在ant文件中,我完成了以下操作:

<project name="myProj">
  <property environment="env"/>
  <property name ="MY_SDK" value="${env.MY_SDK}"/>
  .
  .
  .
  <target name="compile-code">
    <echo>
      1:  ${env.MY_SDK}
      2:  ${env}
    </echo>

    <javac includeantruntime="false" destdir="${CLASSES}" fork="true" debug="on">
      <classpath>
        <pathelement path="${MY_SDK}" />
      </classpath>
    </javac>
  </target>

当我运行“ant -f build_java.xml”但是这是我为echo得到的输出:

compile-java:
  [echo]
  [echo]          1:  ${env.MY_SDK}
  [echo]          2:  ${env}
  [echo]

我也遇到了一堆错误,没有从我的SDK中找到任何内容。

我确保我的环境变量设置正确。如果我从我的.bash_profile中完全复制它并将其粘贴到我的属性的“VALUE”中,那么效果很好。所以我觉得它与我的环境属性有关。

我对ANT有点新意,所以对于我在这里做错了什么建议我将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

Ant代码是正确的。如果未设置环境属性,则默认回退行为是打印属性值而不进行插值。

在我的环境(Mac OS 10.9)中,我运行了您的build.xml并获得了上面提到的结果

然后我设置了MY_SDK环境变量:

$ MY_SDK=/my-sdk
$ echo $MY_SDK
/my-sdk

并运行您的代码:

$ ant compile-code
Buildfile: /Users/helderdarocha/Desktop/build.xml

compile-code:
     [echo] 
     [echo]       1:  /my-sdk
     [echo]       2:  ${env}
     [echo]     

BUILD FAILED
/Users/helderdarocha/Desktop/build.xml:12: srcdir attribute must be set!

如您所见,变量已正确打印。

你可以测试一下。例如,尝试打印${env.PATH}