我在访问netbeans build.xml ant脚本中的环境变量时遇到问题。基本上,当我使用这段代码时:
<target name="-pre-jar">
<property environment="env"/>
<echo message="${env.ANT_HOME}"/>
<echo message="${env.JAVA_HOME}"/>
</target>
我收到如下输出:
compile:
${env.ANT_HOME}
${env.JAVA_HOME}
这是一个问题,因为我需要稍后在脚本中访问这些文件路径。另外,我确信这两个被定义为环境变量。以下是我的终端的一些证据:
Lukas-Rezeks-MacBook-Pro:ant lukas$ echo $JAVA_HOME - $ANT_HOME
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home - /ant
我在ant build脚本变量声明中做错了什么,或者我错过了一些明显的东西?对于任何反馈,我们都表示感谢。感谢。
答案 0 :(得分:1)
你可以把
<property environment="env"/>
在目标之外,
或者在编译任务中使用“depends =”而不是“antcall”。
我在Linux上做了以下测试:
<target name="pre-jar">
<property environment="env"/>
<echo message="${env.ANT_HOME}"/>
<echo message="${env.JAVA_HOME}"/>
</target>
<target name="compile">
<antcall target="pre-jar" />
<echo message="${env.ANT_HOME}"/>
<echo message="${env.JAVA_HOME}"/>
</target>
当我运行“ant compile”时,我得到了以下内容:
编译:
预罐:
[echo] /opt/apache-ant-1.8.2
[echo] /opt/jdk1.7.0
[echo] $ {env.ANT_HOME}
[echo] $ {env.JAVA_HOME}
当我使用depends =“pre-jar”时,结果是:
预罐:
[echo] /opt/apache-ant-1.8.2
[echo] /opt/jdk1.7.0编译:
[echo] /opt/apache-ant-1.8.2
[echo] /opt/jdk1.7.0
当我把任何目标放在外面时,结果是:
编译:
预罐:
[echo] /opt/apache-ant-1.8.2
[echo] /opt/jdk1.7.0
[echo] /opt/apache-ant-1.8.2
[echo] /opt/jdk1.7.0
答案 1 :(得分:0)
这对我的OSX系统完全有效:
[mike@numbersix ~/temp]$ ant -version
Apache Ant(TM) version 1.8.2 compiled on June 3 2011
[mike@numbersix ~/temp]$ echo $JAVA_HOME - $ANT_HOME
/Library/Java/Home - /usr/share/ant
[mike@numbersix ~/temp]$ cat build.xml
<project name="blah">
<target name="foo">
<property environment="env"/>
<echo message="${env.ANT_HOME}"/>
<echo message="${env.JAVA_HOME}"/>
</target>
</project>
[mike@numbersix ~/temp]$ ant foo
Buildfile: /Users/mike/temp/build.xml
foo:
[echo] /usr/share/ant
[echo] /Library/Java/Home
BUILD SUCCESSFUL
Total time: 0 seconds