java - Ant 文件中未读取环境变量

标签 java ant environment-variables bash

我有一个外部 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”时,这是我得到的 echo 输出:

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

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

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

我对 ANT 有点陌生,因此非常感谢任何关于我在这里可能做错的建议。谢谢。

最佳答案

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}

关于java - Ant 文件中未读取环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24245571/

相关文章:

java - 接口(interface)及扩展

java - 如何捕获 "NotesException: Notes error: Remote system no longer responding"并重试?

java - ObjectInputStream.readObject 导致 EOFException

java - 如何在 weblogic server 10.3 中定义自定义服务器属性

r - 以编程方式设置环境变量

java - 如何将我的数据库连接放在 .war 文件之外?

java - Jenkins 中的 Java Ant 任务构建失败

ant - 如果值为空,如何在 Ant 中省略 list 属性?

java - 如果没有更改则跳过 DLL 编译

python - 为什么python中设置的环境变量不能持久化?