【问题标题】:Environment Variables not being read in Ant FileAnt 文件中未读取环境变量
【发布时间】:2014-08-06 09:20:20
【问题描述】:

我有一个外部 SDK,需要在我的 ant 文件中设置路径。由于这在我们的每个开发环境中都可能不同,因此我们通过环境变量对其进行设置。在 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”时,这是我得到的回声输出:

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

我还收到一堆错误,没有从我的 SDK 中找到任何东西。

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

我对 ANT 有点陌生,因此对于我在这里可能做错的任何建议将不胜感激。谢谢。

【问题讨论】:

  • 我也试过了。结果相同。

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


【解决方案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}

【讨论】:

  • 好的。所以我确实用 ${env.PATH} 对其进行了测试,果然它打印出了正确的变量。但是,如果我在终端中运行 echo $MY_SDK,它会打印我的 SDK 的正确路径。
  • 你可能需要export你的环境变量。
  • 看起来有几个在工作。我已经让 PATH 和 JAVA_HOME 都回来了。但MY_SDK、FLEX_HOME、ANT_HOME都没有。
猜你喜欢
  • 2017-03-06
  • 2013-05-27
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
  • 2018-07-15
  • 1970-01-01
  • 2011-12-21
相关资源
最近更新 更多