Как дать значение по умолчанию для свойства, которое не установлено или равно пустой строке в Ant? - PullRequest
0 голосов
/ 15 января 2019

У меня есть build.xml файл, подобный следующему:

<project basedir="." default="test">
    <target name="test">
        <condition property="foo" value="${foo}" else="default_value">
            <and>
                <not>
                    <equals arg1="${foo}" arg2=""/>
                </not>
                <isset property="foo" />
            </and>
        </condition>
        <echo message="foo: ${foo}"/>
    </target>
</project>

Как мне изменить мой build.xml файл, чтобы свойство foo равнялось default_value при выполнении ant -Dfoo=${NONEXISTENT_VALUE} -buildfile build.xml сценария оболочки?

-Dfoo=${NONEXISTENT_VALUE} передает свойство ant.

NONEXISTENT_VALUE - это переменная среды, которая не определена.Я имею в виду echo ${NON_EXIST_VALUE} возвращает пустую строку.

ant -Dfoo=${NONEXISTENT_VALUE} -buildfile build.xml генерирует следующий результат:

test:
     [echo] foo:

BUILD SUCCESSFUL
Total time: 0 seconds

Это не то, что я хочу.Я ожидал, что foo будет default_value.Потому что foo установлено, и я думаю, что это пустая строка.

1 Ответ

0 голосов
/ 16 января 2019

В Ant свойства, определенные в командной строке, всегда будут иметь прецедент над чем-либо в скрипте, поэтому у вас всегда будет проблема, если вы определите foo при запуске команды, подобной этой. Я бы предложил использовать атрибут environment задачи property, чтобы задать префикс для переменных среды, а затем ссылаться на соответствующие переменные в скрипте. Вот пример того, как это делается:

<target name="test">
    <property environment="env" />

    <condition property="foo" value="${env.USER}" else="default_value">
        <isset property="env.USER" />
    </condition>

    <condition property="bar" value="${env.NONEXISTANT}" else="default_value">
        <isset property="env.NONEXISTANT" />
    </condition>

    <echo message="foo: ${foo}"/>

    <echo message="bar: ${bar}"/>
</target>

Запустив приведенный выше текст, вы увидите, что для foo установлено ваше имя пользователя, а bar для "default_value"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...