在我的 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}"
有谁知道这可能是什么原因?
谢谢
该消息告诉您 Ant 无法解析该属性env.JAVA_HOME;这意味着该JAVA_HOME机器中未设置环境变量。
您通常可以在您的系统(如果您是 Unix)上通过执行or找到实际ant命令所在的位置。如果您查看该位置,您通常会看到它是目录下实际命令的链接。which anttype antant$ANT_HOME
看看这个脚本。如果在环境中没有默认设置这些,其中大部分只是试图确定准确的位置$ANT_HOME和位置。$JAVA_HOME
您在antshell 脚本中看不到的是:
EXPORT JAVA_HOME
因此,即使$JAVA_HOME在ant脚本中设置,它也永远不会导出到环境中(除非有人修改了antshell 脚本. If an environment variable is not exported, it is unavailable to child processes -- like thejava child process running yourant` 进程。
因此,如果您在执行$JAVA_HOME之前未设置的机器上ant,它将在您的构建脚本中不可用。
但是,Ant 和 Java(因为 Ant 是一个 Java 进程)都设置了一系列您可以使用的默认属性。当 Ant 执行时,它会设置它自己的内置属性,其中包括${ant.home}. 而且,在执行 Java 时,Java 还会设置一个完整的Java 属性列表,例如${java.home}.
因此,如果您真的需要知道 JAVA_HOME 目录的位置,请使用该属性${java.home},而不是依赖于环境变量$JAVA_HOME。
如果您想获取这些属性的列表,请运行以下 Ant 构建文件:
<project>
<echoproperties/>
</project>