Как установить переменную окружения path из скрипта ant - PullRequest
41 голосов
/ 10 апреля 2011

Как установить переменную окружения path из ant script

Ответы [ 7 ]

65 голосов
/ 12 апреля 2011

Это для <exec> задачи?

Вы можете установить переменные окружения при запуске задачи <exec>:

<exec executable="${my.command}">
    <env key="foo" value="bar"/>
    <arg line="some value"/>
</exec>

Вы можете использовать <property environment="env"/>, чтобы расширить путь:

<property environment="env"/>
<exec executable="${my.command}">
   <env key="PATH" value="${env.PATH}:${my.directory}"/>
</exec>

Если это для какой-то пользовательской задачи, которая требует переменной среды, но не позволяет вам установить переменную среды в задаче, если она не установлена, вы можете попробовать установить ее в:

<property environment="env"/>
<property name="env.foo" value="bar!bar"/>

Это может установить для переменной среды с именем foo значение bar!bar!. Я кое-что помню об этом, но не смог заставить его работать.

Другая вещь, которую вы можете сделать, это заставить один скрипт ant выполнить другой, и первый скрипт ant задает значение среды. Я сделал это, когда мне нужно было установить ANT_OPT.

6 голосов
/ 24 апреля 2013

В ant свойства неизменны, поэтому приведенное выше предложение Дэвида:

<property name="env.foo" value="bar!bar"/>

не сработает.

Но (с библиотекой antcontrib) переменные являются изменяемыми, поэтому это работает:

<var name="env.foo" value="bar!bar"/>

ПРИМЕЧАНИЕ: для использования библиотеки antcontrib загрузите ее отсюда: ANT Contrib - Скачать

Это выполнит работу, но кажется подлым трюком.

Так что к вашему конкретному вопросу, попробуйте:

<taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
        <pathelement location="${basedir}/lib/ant-contrib-1.0b3.jar" />
    </classpath>
</taskdef>

<var name="env.PATH" value="some:custom:value"/>
2 голосов
/ 15 ноября 2012

Вы можете использовать команду setx для установки переменных окружения.

Справку по команде setx см. http://ss64.com/nt/setx.html

<exec executable="setx.exe">
  <arg line="Path C:\jdk1.5.0_12\bin"/>
  <arg line="/m"/>
</exec>
1 голос
/ 21 мая 2014

Я нашел, что работает по кавычкам значение переменной

<exec executable="setx">
    <arg line="Path &quot;${env.Path};c:\testPath&quot;" />
    <arg line="/m" />
</exec>
0 голосов
/ 28 июня 2015

Вы можете использовать для расширения пути:

И затем вы можете выполнить, например, sh от ant до export переменную среды:

<property environment="env"/>
<exec executable="sh">
   <arg value="-c"/>
   <arg value="export PATH=${env.Path}:${myPath}"/>
</exec>

Или выполнитьсвою команду и установите env с помощью value, например:

<property environment="env"/>
<exec executable="${your.command}">
   <env key="PATH" value="${env.PATH}:${your.directory}"/>
</exec>
0 голосов
/ 25 ноября 2013

поскольку у меня недостаточно репутации, чтобы комментировать <variable ... предложения, мой комментарий в качестве ответа ...: - /

In ("более новый") ant-contrib (дополнительный пакет ANT) задача не называется <variable ..., но <var ...!

(но она все равно не сработала, так как я думаю, что манипулирование env.* (созданный <property environment="env" ... /> task) Свойства / переменные Java относится только к задачам / процессам, оценивающим эти свойства Java, которые не автоматически «синхронизируются» с ОСпеременные окружения )

0 голосов
/ 11 апреля 2011

Чтобы установить переменные среды через Ant, попробуйте вызвать exec task и установить значения командной строки.Я не пробовал это кстати, но это должно работать.

...