我有一个外部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有点新意,所以对于我在这里做错了什么建议我将不胜感激。感谢。
答案 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}
。