Существует ли способ динамично загрузить файл свойств в NAnt?

Я предлагаю использовать

'regex:/.*@(?:bournemouth\.ac\.uk|nhs\.(?:net|uk))/i'

Или

'regex:/@(?:bournemouth\.ac\.uk|nhs\.(?:net|uk))/i'

Подробности

  • @ - символ @
  • (?:bournemouth\.ac\.uk|nhs\.(?:net|uk)) - группа без захвата, соответствующая
    • bournemouth\.ac\.uk - строка bournemouth.ac.uk
    • | - или
    • [118 ] - nhs., за которым следуют net или uk.

Обратите внимание, что буквенные точки экранированы, внутри шаблона между пробелами нет пробелов, а флаг i устанавливается только в конце регулярного выражения.

20
задан WildJoe 16 September 2008 в 20:47
поделиться

4 ответа

Шаг 1 : Определите свойство в своем сценарии NAnt для отслеживания среды, которую Вы создаете для (локальный, тест, производство, и т.д.).

<property name="environment" value="local" />

Шаг 2 : Если у Вас уже нет конфигурации или цели инициализации, от которой зависят все цели, то создайте цель конфигурации и удостоверьтесь, что Ваши другие цели зависят от нее.

<target name="config">
    <!-- configuration logic goes here -->
</target>

<target name="buildmyproject" depends="config">
    <!-- this target builds your project, but runs the config target first -->
</target>

Шаг 3 : Обновите свою цель конфигурации для получения по запросу в соответствующем файле свойств на основе свойства среды.

<target name="config">
    <property name="configFile" value="${environment}.config.xml" />
    <if test="${file::exists(configFile)}">
        <echo message="Loading ${configFile}..." />
        <include buildfile="${configFile}" />
    </if>
    <if test="${not file::exists(configFile) and environment != 'local'}">
        <fail message="Configuration file '${configFile}' could not be found." />
    </if>
</target>

Примечание, мне нравится позволять членам команды определять свои собственные файлы local.config.xml, которые не становятся преданными управление исходным кодом. Это обеспечивает хорошее место для хранения строк локального соединения или других настроек окружения.

Шаг 4 : Установите свойство среды при вызове NAnt, например:

  • nant-d:environment=dev
  • nant-d:environment=test
  • nant-d:environment=production
26
ответ дан 30 November 2019 в 00:09
поделиться

Можно использовать include задача включать другой файл типа "build" (содержащий свойства) в основном файле типа "build". if атрибут include задача может протестировать против переменной, чтобы определить, должен ли файл типа "build" быть включен:

<include buildfile="devPropertyFile.build" if="${buildEnvironment == 'DEV'}"/>
<include buildfile="testPropertyFile.build" if="${buildEnvironment == 'TEST'}"/>
<include buildfile="prodPropertyFile.build" if="${buildEnvironment == 'PROD'}"/>
5
ответ дан 30 November 2019 в 00:09
поделиться

У меня была подобная проблема, как которая ответ от scott.caligan, частично решенного, однако, я хотел, чтобы люди смогли установить среду и загрузить соответствующий файл свойств только путем определения цели так:

  • тест nant dev
  • nant
  • nant этап

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

<target name="dev">
  <property name="environment" value="dev"/>
  <call target="importProperties" cascade="false"/>
</target>

<target name="test">
  <property name="environment" value="test"/>
  <call target="importProperties" cascade="false"/>
</target>

<target name="stage">
  <property name="environment" value="stage"/>
  <call target="importProperties" cascade="false"/>
</target>

<target name="importProperties">
  <property name="propertiesFile" value="properties.${environment}.build"/>
  <if test="${file::exists(propertiesFile)}">
    <include buildfile="${propertiesFile}"/>
  </if>
  <if test="${not file::exists(propertiesFile)}">
    <fail message="Properties file ${propertiesFile} could not be found."/>
  </if>
</target>
5
ответ дан 30 November 2019 в 00:09
поделиться

Путем я сделал такого рода вещь, должен включать отдельные файлы типа "build" в зависимости от типа сборки с помощью nant задача . Возможная альтернатива могла бы быть должна использовать iniread задача в nantcontrib.

0
ответ дан 30 November 2019 в 00:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: