как установить полное имя хоста на машине linux в переменную окружения в ant build.xml - PullRequest
1 голос
/ 07 ноября 2019

У меня есть муравей build.xml.

Я пытаюсь установить полное имя хоста компьютера (например, «abc-us.xyz.com») в переменную окружения в муравье, а затем пытаюсь использовать эту переменную окружения везде.

Но я не могу этого сделать.

На данный момент я попробовал:

    <target name="get-fqdn">
    <echo>Getting the fully qualified hostname of the machine</echo>
    <exec executable="/bin/bash">
    <env key="FQDN" value="hostname-f"/>
    </exec>
    </target>

В соответствии с приведенным выше кодом, я надеюсь, что он установитзначение hostname -f для переменной среды FQDN.

Тогда у меня есть другая цель:

    <target name="get-database" depends="init,get-fqdn">
    <echo>Getting the database*************</echo>
    <echo>$FQDN</echo>
    </target>

В этой второй цели я пытаюсь получить доступ к переменной среды FQDN, это уже было установлено в первой цели.

Но это не работает. Пожалуйста, помогите

Я не получаю значение FQDN во второй цели, когда я echo это.

1 Ответ

0 голосов
/ 08 ноября 2019

Прежде всего, любой вызов <exec> будет выполняться в своей собственной оболочке, поэтому любая переменная окружения, установленная вами в этом вызове, будет существовать только в этой оболочке, а не в родительской (Ant). Вам нужен способ сохранить значение переменной среды таким образом, чтобы он сохранялся при вызовах оболочки, например, в файле свойств:

<target name="get-fqdn">
  <exec executable="/bin/bash">
    <env key="FQDN" value="some_host.com"/>
    <arg value="-c"/>
    <arg line="echo FQDN=$FQDN > fqdn.properties"/>
  </exec>
</target>

Затем все, что вам нужно сделать, это загрузить этот файл свойств исделайте свойства, которые он содержит, доступными для Ant:

<target name="get-database" depends="get-fqdn">
  <property file="fqdn.properties"/>
  <echo message="retrieved FQDN=${FQDN}"/>
</target>
...