$ {env.JAVA_HOME} не найден - Ant

В моем файле 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}"

Кто-нибудь знает, что может вызвать это?

Спасибо

Ответ 1

Сообщение сообщает вам, что Ant не удалось разрешить свойство env.JAVA_HOME; это означает, что переменная среды JAVA_HOME не была установлена ​​в этой машине.

Ответ 2

Обычно вы можете найти в своей системе (если вы Unix), где находится настоящая команда ant, выполняя либо which ant, либо type ant. Если вы посмотрите на это местоположение, вы обычно увидите, что это ссылка на фактическую команду ant в каталоге $ANT_HOME.

Взгляните на этот script. Большая часть из них просто пытается точно определить, где находятся $ANT_HOME и $JAVA_HOME, если они не установлены по умолчанию в среде.

Что вы не видите в оболочке ant script:

 EXPORT JAVA_HOME

Итак, хотя $JAVA_HOME устанавливается внутри ant script, он никогда не экспортируется в среду (если только кто-то не изменил оболочку ant script . If an environment variable is not exported, it is unavailable to child processes -- like the java child process running your ant `процесс.

Таким образом, если вы находитесь на машине, где $JAVA_HOME не установлен до выполнения ant, он не будет доступен в вашей сборке script.

Однако, как Ant, так и Java (поскольку Ant - это процесс Java), настройте целое множество свойств по умолчанию, которые вы можете использовать. Когда выполняется Ant, он устанавливает собственные встроенные свойства, которые включают такие вещи, как ${ant.home}. И, когда Java выполняется, Java также устанавливает полный список Свойства Java, например ${java.home}.

Итак, если вам действительно нужно знать, где находится каталог JAVA_HOME, используйте свойство ${java.home} и не зависеть от переменной окружения $JAVA_HOME.

Если вы хотите получить список этих свойств, запустите следующий файл Ant build:

<project>
    <echoproperties/>
</project>