Могут ли свойства Ant разрешать другие свойства? - PullRequest
13 голосов
/ 07 июня 2011

Могут ли свойства Ant, заданные в файле свойств, разрешать другие свойства из файлов свойств?

Например, я могу сделать это:

<property name="prop1" value="in_test_xml1" />
<property name="prop2" value="${prop1}" />

и prop2 становится "in_test_xml1". Это хорошо.

Но в этом случае при использовании файла свойств ввода:

prop1=sample_prop
prop2=${prop1}

prop2 не установлен в "sample_prop"

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

Это ожидается или я что-то упустил?

Ответы [ 2 ]

19 голосов
/ 07 июня 2011

Ant поддерживает расширение свойств в файле, см. Раздел «Файл свойств» в руководстве по задаче Свойство .

В следующем примере показано разрешение свойств:

  • в одном файле свойств
  • из одного файла свойств в другом файле свойств
  • в файле сборки

Первый файл свойств:

$ cat props1.properties
prop1=world
prop2=hello ${prop1}

Второй файл свойств:

$ cat props2.properties
prop3=goodbye ${prop1}

Файл сборки:

<project default="test">
  <property file="props1.properties"/>
  <property file="props2.properties"/>
  <property name="prop4" value="${prop3}, good luck"/>
  <target name="test">
    <echo message="prop1 = ${prop1}"/>
    <echo message="prop2 = ${prop2}"/>
    <echo message="prop3 = ${prop3}"/>
    <echo message="prop4 = ${prop4}"/>
  </target>
</project>

Вывод:

$ ant
Buildfile: build.xml

test:
     [echo] prop1 = world
     [echo] prop2 = hello world
     [echo] prop3 = goodbye world
     [echo] prop4 = goodbye world, good luck

BUILD SUCCESSFUL
Total time: 0 seconds

Существует ли другой вид разрешения свойства, которыйу вас не работает?

Редактировать

После вашего комментария теперь я понимаю, что вы используете опцию командной строки -propertyfile, чтобы указать файл свойств для Ant длязагрузить (вместо того, чтобы указывать файл в самом файле сборки, как я это делал выше).

Я провел быстрое тестирование с этим и обнаружил, что Ant 1.7.1 не делал расширения свойств в файлах для файлов, загруженных с использованием этогоопция командной строки.Но Муравей 1.8.2 делает.

Это Муравей Ошибка 18732 .Вы должны быть в состоянии решить, обновив свою версию Ant.

4 голосов
/ 18 апреля 2015

Более простым решением для этой задачи было бы использование Ant-contrib Tasks: Propertycopy .

Из руководства :

<property name="org" value="MyOrg" />
<property name="org.MyOrg.DisplayName" value="My Organiziation" />
<propertycopy name="displayName" from="org.${org}.DisplayName" />

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