在我的build.xml文件,我有这行:
<property environment="env"/>
<echo message="JAVA_HOME is set to = ${env.JAVA_HOME}" />
在某些机器上,这将打印
"JAVA_HOME is set to = /usr/jdk1.6"
但在其他一些,它会打印此
"JAVA_HOME is set to = ${env.JAVA_HOME}"
有谁知道什么可能会导致此?
感谢
在我的build.xml文件,我有这行:
<property environment="env"/>
<echo message="JAVA_HOME is set to = ${env.JAVA_HOME}" />
在某些机器上,这将打印
"JAVA_HOME is set to = /usr/jdk1.6"
但在其他一些,它会打印此
"JAVA_HOME is set to = ${env.JAVA_HOME}"
有谁知道什么可能会导致此?
感谢
的消息告诉你,蚂蚁是不是能够解决财产env.JAVA_HOME
;这意味着环境变量JAVA_HOME
未在该机器中设置。
通常您可以在系统上找到您的系统(如果您是Unix系统),通过执行which ant
或type ant
实际的ant
命令。如果您查看该位置,您通常会看到它是链接到$ANT_HOME
目录下的实际ant
命令。
看看这个脚本。其中很大一部分只是试图确定$ANT_HOME
和$JAVA_HOME
的确切位置,如果它们在环境中未被默认设置。
你不要在ant
shell脚本看到的是:
EXPORT JAVA_HOME
因此,即使$JAVA_HOME
被设置ant
脚本里面,它从未出口到环境中(除非有人已经修改了ant
shell脚本. If an environment variable is not exported, it is unavailable to child processes -- like the
的java child process running your
ant`过程。
因此,如果你身在何处$JAVA_HOME
是ant
之前执行未设置一台机器上,它不会在你的构建脚本可用。
然而,无论是蚂蚁和Java(因为Ant是一个Java进程)的设置,你可以使用默认属性的整体转换。当Ant执行时,它设置为own built in properties,其中包括诸如${ant.home}
之类的内容。而且,当执行Java时,Java也会建立一个完整的列表Java Properties,如${java.home}
。
因此,如果您确实需要知道您的JAVA_HOME目录所在的位置,请使用属性${java.home}
而不依赖于环境变量$JAVA_HOME
。
如果你想获得这些属性的列表,运行以下Ant构建文件:
<project>
<echoproperties/>
</project>
如果未设置JAVA_HOME,那么怎么可能为项目建成? (这是一个Java项目) –
蚂蚁并不需要设置'JAVA_HOME'(正如你可能已经想通了,因为你能够执行,即使在一些机器上'JAVA_HOME'没有设置你的构建文件) –
确定这现在是有道理的。谢谢 –