Переменные среды не читаются в файле Ant

У меня есть внешний SDK, путь к которому мне нужно указать в моем файле ant. Поскольку это может быть разным в каждой среде нашего разработчика, мы установили это через переменную среды. В файле ant я сделал следующее:

<project name="myProj">
  <property environment="env"/>
  <property name ="MY_SDK" value="${env.MY_SDK}"/>
  .
  .
  .
  <target name="compile-code">
    <echo>
      1:  ${env.MY_SDK}
      2:  ${env}
    </echo>

    <javac includeantruntime="false" destdir="${CLASSES}" fork="true" debug="on">
      <classpath>
        <pathelement path="${MY_SDK}" />
      </classpath>
    </javac>
  </target>

Когда я запускаю «ant -f build_java.xml», я получаю следующий результат для своего эха:

compile-java:
  [echo]
  [echo]          1:  ${env.MY_SDK}
  [echo]          2:  ${env}
  [echo]

Я также получаю кучу ошибок, ничего не находя в моем SDK.

Я убедился, что моя переменная среды установлена ​​правильно. Если я скопирую его в точности из моего .bash_profile и вставлю в «VALUE» своего свойства, он будет отлично работать. Так что у меня такое чувство, что это как-то связано с моим свойством окружения.

Я новичок в ANT, поэтому буду очень признателен за любые советы о том, что я здесь делаю неправильно. Спасибо.


person Cameron Jones    schedule 16.06.2014    source источник
comment
Я тоже пробовал это. Тот же результат.   -  person Cameron Jones    schedule 16.06.2014


Ответы (1)


Код Ant правильный. Если свойство среды не задано, резервное поведение по умолчанию - распечатать значение свойства без интерполяции.

В моей среде (Mac OS 10.9) я запустил ваш build.xml и получил результаты, о которых вы упомянули выше.

Затем я установил переменную окружения MY_SDK:

$ MY_SDK=/my-sdk
$ echo $MY_SDK
/my-sdk

И запустил свой код:

$ ant compile-code
Buildfile: /Users/helderdarocha/Desktop/build.xml

compile-code:
     [echo] 
     [echo]       1:  /my-sdk
     [echo]       2:  ${env}
     [echo]     

BUILD FAILED
/Users/helderdarocha/Desktop/build.xml:12: srcdir attribute must be set!

Как видите, переменная напечатана правильно.

Вы можете это проверить. Например, попробуйте напечатать ${env.PATH}.

person helderdarocha    schedule 16.06.2014
comment
Хорошо. Итак, я протестировал его с помощью $ {env.PATH} и, конечно же, он распечатал правильную переменную. Однако, если в терминале я запускаю echo $ MY_SDK, он печатает правильный путь к моему SDK. - person Cameron Jones; 16.06.2014
comment
Возможно, вам потребуется export переменная среды. - person helderdarocha; 16.06.2014
comment
Похоже, что некоторые работают. Я получил как PATH, так и JAVA_HOME, чтобы вернуться. но MY_SDK, FLEX_HOME, ANT_HOME - нет. - person Cameron Jones; 16.06.2014