Муравей: ссылка на динамические свойства - PullRequest
0 голосов
/ 29 июня 2009

Я хочу использовать один и тот же ant-скрипт для сборки в моей локальной среде Windows или на нашем сервере сборки redhat.

У меня есть переменная buildDirectory в двух файлах (build_unix.properties & build_windows). Я хочу установить переменные в зависимости от среды.

<osfamily property="os.family"/>
<property file="./build_${os.family}.properties" />
<property name="tmp-base.folder" value="${buildDirectory}/tmp/"/>

Я тоже пробовал

<if>
    <os family="unix"/>
    <then>
        <property file="./build_unix.properties" />
    </then>
    <else>
        <property file="./build_windows.properties" />
    </else>
</if>

Есть идеи?

Ответы [ 3 ]

1 голос
/ 29 июня 2009

Вы спрашиваете, как вы можете автоматически установить свойство os.family?

Если так, вот один из подходов:

  <available file="C:\\" property="os.family" value="windows" />
  <available file="/usr/bin/" property="os.family" value="unix" />

Ах! Отредактированный вопрос проясняет то, что вы спрашиваете (не это), и я вижу, что вы используете задачу «osfamily» из ant-contrib для определения семейства ОС. Но я оставлю этот ответ всем, кто просто использует ant без ant-contrib.

0 голосов
/ 29 июня 2009

у вас может быть два файла: build-unix.properties и build-windows.properites, а в вашей цели init вы просто делаете копию:

<copy file="build-${os.family}.properties" tofile="build.properties">

ваш основной build.xml может просто ссылаться на файл build.properties.

Это может быть довольно сложно, чтобы заставить его работать должным образом, поэтому я хотел бы сохранить все свойства сервера сборки в файле build.properties и разрешить локальное переопределение (для вашего окна Windows) в build-local.properties. Вы также можете переместить свойства в build-common.properties, чтобы ваш файл сборки содержал файлы свойств в следующем порядке

<property file="build-local.properties"/>
<property file="build-common.properties"/>
<property file="build.properties"/>
0 голосов
/ 29 июня 2009

Я бы ожидал, что ваша версия if ... then ... else будет работать. Поскольку, очевидно, это не так, я бы добавил несколько дополнительных эхо-сигналов, чтобы убедиться, что ваша сборка делает то, что вы думаете.

  1. Эхо внутри then и else сообщит вам наверняка, какой путь выполняется.
  2. Добавьте префикс к свойствам (например, ), а затем добавьте , чтобы убедиться, что свойства, которые вы считаете загружаемыми есть.
...