Свойство Phing: откат от переменной среды к файлу свойств
Есть ли элегантный способ определения стоимости недвижимости? Например, я хотел бы разрешить чтение свойства из файла, а также захват из переменной среды. Если переменная окружения присутствует, я бы хотел расставить приоритеты над значением файла.
Вот что у меня есть (с примером свойства deploy.destination
):
<property environment="env" />
<if>
<isset property="env.DEPLOY_DEST" />
<then>
<property name="deploy.destination" refid="env.DEPLOY_DEST"/>
</then>
</if>
<property file="build.properties"/>
Тем не менее, это довольно громоздко (особенно для более чем более собственности).
Есть ли способ, которым я могу сделать что-то подобное?
<property environment="env" />
<property name="deploy.destination" refid="env.DEPLOY_DEST"/>
<property file="build.properties"/>
В этом примере это не удастся, если env.DEPLOY_DEST
не установлен.
Спасибо!
2 ответа
Учитывая ваше заявление:
Если переменная окружения присутствует, я бы хотел расставить приоритеты над значением файла.
ты можешь сделать
<property environment="env" />
<if>
<available file="custom.properties"/>
<then>
<property file="custom.properties" override="false"/>
</then>
</if>
Ключ должен быть override="false", чтобы позволить значениям свойства env остаться.
Переменные среды широко используются на платформах CI/CD, если это ваш случай, возможно, будет полезно следующее.
Сначала я покажу вам свой buildfile build.xml:
<project name="Demo" default="deployment">
<target name="deployment">
<property file="build.properties.ini"/>
<echo message="Your host is: ${destination}"/>
</target>
</project>
Мой файл свойств build.properties.ini:
destination = localhost
Если мы выполним единственную цель в нашем файле сборки, $ phing deployment
, результат будет ожидаемым:
$ phing deployment
[echo] Your host is: localhost
Теперь выполните следующее $ phing deployment -Ddestination=example.com
, вывод:
$ phing deployment -Ddestination=example.com
[echo] Your host is: example.com
Как вы можете видеть, мой buildfile и propertyfile остаются без изменений. Однако я был способен изменить значение destination
Это связано с тем, что когда свойства задаются в качестве аргумента командной строки, они имеют более высокий приоритет, чем свойства, объявленные в файле свойств.
Заключить:
// Use the following in development
$ phing deployment
// And override "destination" in your CI/CD config
$ phing deployment -Ddestination=$DEPLOY_DEST
Источник: https://www.phing.info/phing/guide/en/output/chunkhtml/ch04s03.html