Как прочитать раздел из файла .properties в ant build? - PullRequest
0 голосов
/ 26 марта 2019

У меня есть файл .properties с переменными = значениями, я хочу переопределить несколько из них в зависимости от среды / режима (DEV, QA, PROD)

Я хочу прочитать свойства из файла на основе раздела. Хотите прочитать все свойства по умолчанию, которые не входят в какой-либо раздел, и некоторые некоторые свойства должны быть переопределены в соответствии с данным именем раздела, которое я могу передать из скрипта ant при чтении файла свойств.

--- файл project.properties (можно изменить) ---

#default
var1=val1
url=abc.xyz
un=un_default
pwd=pwd_default

#Mode prod
[PROD]
un=un_dev
pwd=pwd_prod
[PROD.END]

#Mode dev
[DEV]
url=xyz.dev
un=un_dev
pwd=pwd_dev
[DEV.END]

#Mode qa
[QA]
un=un_qa
pwd=pwd_qa
[QA.END]

------ муравей -----

<property environment="env" />
<echo>Mode : ${env.MODE} </echo>

<loadproperties srcfile="project.properties">
</loadproperties>

Теперь, как передать $ {env.MODE} при чтении файла свойств, чтобы загружались все свойства по умолчанию и свойства режима / раздела, если значение по умолчанию уже существует, тогда следует переопределить значение в разделе.

1 Ответ

3 голосов
/ 26 марта 2019

Ant имеет «первое чтение - это подход по значению», поэтому вы не можете прочитать значения по умолчанию и затем попытаться переопределить;скорее вы читаете специфику, а затем значения по умолчанию, и значения по умолчанию не заменят ничего уже установленного.Есть несколько способов обойти эту проблему, но легче принять, что один раз набор не изменит подход.

Я в любом случае не знаю о том, чтобы прочитать раздел файла.Скорее, подход, как правило, состоит в том, чтобы поместить каждый файл dev / qa / prod в отдельные файлы, а затем создать имя файла в определенном режиме и прочитать его.

Вот пример, который я только что вырвал изодин из наших проектов.Идея состоит в том, что можно иметь ряд мест, где можно установить значение, в этом случае можно настроить его на основе имени пользователя плюс хост, только пользователь или значения по умолчанию:

<property environment="env" />
<property name="env.HOSTNAME" value="${env.COMPUTERNAME}" />

<property file="${user.name}-${env.HOSTNAME}-build.properties" />
<property file="${user.name}-build.properties" />
<property file="${basedir}/build.properties" />
...