在我的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}"
有人知道是什么原因造成的吗?
感谢
消息告诉Ant无法解析属性env.JAVA_HOME
;这意味着没有在该机器中设置环境变量CCD_ 2。
您通常可以通过执行which ant
或type ant
,在您的系统(如果您是Unix)上找到实际的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’process
因此,如果您所在的计算机在执行ant
之前未设置$JAVA_HOME
,则它在构建脚本中不可用。
然而,Ant和Java(因为Ant是一个Java进程)都设置了一系列可以使用的默认属性。当Ant执行时,它会设置自己的内置属性,其中包括${ant.home}
之类的内容。而且,在执行Java时,Java还会建立一个完整的Java属性列表,如${java.home}
。
因此,如果您确实需要知道JAVA_HOME目录的位置,请使用属性JAVA_HOME
0,而不依赖于环境变量$JAVA_HOME
。
如果您想获得这些属性的列表,请运行以下Ant构建文件:
<project>
<echoproperties/>
</project>