2012-11-25 19 views
11

Czy możliwe jest ustawienie wartości właściwości w Ant plików właściwości (w przeciwieństwie do build.xml) w sposób warunkowy? Na przykład, jeśli ustawiona jest właściwość apache.root - w innym przypadku my_property będzie . Jeśli nie, jaka byłaby powszechna praktyka - pliki wielokrotnego użytku (build.xml) do ponownego użycia?Właściwość warunkowa w pliku właściwości mrówek

Odpowiedz

24

Użyj zadanie condition:

<project name="demo" default="run"> 

    <condition property="my_property" value="${apache.root}/myapp" else="/var/www/myapp"> 
     <isset property="apache.root"/> 
    </condition> 

    <target name="run"> 
     <echo message="my_property=${my_property}"/> 
    </target> 

</project> 
+0

Dziękuję. Jednak pytałem o pliki 'property', a nie' build.xml'. Lub, jeśli mam rację, czy "stan" to jedyny sposób, aby to się stało? – BreakPhreak

+0

Możesz odczytać plik właściwości w xml kompilacji, a później zdefiniować nową właściwość w oparciu o właściwości ... – Vishal

+0

Chciałbym mieć "kinda" pliki własności wielokrotnego użytku (z warunkami), które będą odczytywane przez kilka 'build.xml 'pliki. Czy zmierzam w złym kierunku? – BreakPhreak

1

Możesz dołączyć różnych plików własności w oparciu o środowiskach lub zmiennych warunkowych. Na przykład

<echo>Building ${ant.project.name} on OS: ${os.name}-${os.arch}</echo> 
<property file="build-${os.name}.properties" /> 

obejmowałoby to plik o nazwie „build-Okna 7.properties” lub „build-Linux.properties” w zależności od miejsca budowy jest bycie run. Oczywiście dyrektywa właściwości znajduje się w bieżącym katalogu, a także w katalogu domowym. Tak więc plik właściwości może być częścią źródła kompilacji lub w katalogu domowym konta kompilacji.

Można użyć tagu warunek, aby wygenerować część nazwy pliku właściwości, jak również wybrać

1

jedną z najprostszych postaci warunku można użyć to:

<exec executable="hostname" outputproperty="hostname"/> 
<condition property="python" value="/usr/bin/python3.4"> 
    <equals arg1="${hostname}" arg2="host0"/> 
</condition> 
<property name="python" value="/usr/bin/python"/> 

pomieścić inny ścieżka instalacji pythona na przykład. Tutaj domyślną ścieżką instalacji jest/usr/bin/python z wyjątkiem host0, gdzie to /usr/bin/python3.4

0

OP pytał o plik właściwości, a nie w pliku kompilacji ant. Niestety nie można wykonać warunków warunkowych z pliku właściwości. Co możesz zrobić, to mieć oddzielne pliki właściwości dla każdego zestawu zależnych właściwości. Na przykład:

build.xml

<condition property="app.name" value="appA"> 
    <equals arg1="${appName}" arg2="A" /> 
</condition> 
<condition property="app.name" value="appB"> 
    <equals arg1="${appName}" arg2="B" /> 
</condition> 
<property file="${app.name}.properties" /> 
<!-- since properties are immutable, set your defaults here --> 
<property name="apache.root" value="/var" /> 
<property file="restOfProps.properties" /> 

appA.properties

apache.root=/appA 

restOfProps.properties

my_property=${apache.root}/myapp