ANT - Conditional Properties für Weiche

NetBull

Erfahrenes Mitglied
Moin,

ich hab ein ANT Build das zwei Dateien vergleichen soll.
Wenn die auf Text-Basis gleich sind, dann soll anders verfahren werden als wenn Sie das nicht sind.

Hier der Code:
Code:
<project name="project" basedir="../" default="main">

    <!-- set global properties for this build -->
    <property name="oldVersion" value="/code/temp/project/application/configs/version.ini"></property>
    <property name="newVersion" value="/var/www/html/project/application/configs/version.ini"></property>

    <target name="main" depends="prepare, startDeployment, runWithoutDeployment">
        <echo message="version match ${matchingVersions}"></echo>
        <echo message="version mismatch ${nonMatchingVersion}"></echo>
    </target>

    <target name="prepare">

        <!-- gibt true wenn die Dateien gleich sind -->
        <condition property="matchingVersions" value="true" else="false">
            <filesmatch file1="${oldVersion}" file2="${newVersion}" textfile="true"/>
        </condition>

        <!-- gibt true wenn die Dateien nicht gleich sind -->
        <condition property="nonMatchingVersion" value="true" else="false">
            <not>
                <filesmatch file1="${oldVersion}" file2="${newVersion}" textfile="true"/>
            </not>
        </condition>

    </target>

    <!-- komme einfach nicht hier rein.... -->
    <target name="startDeployment" if="${nonMatchingVersions}">
        <echo message="Version has changed, update gets started..."></echo>
    </target>

    <target name="runWithoutDeployment" if="${matchingVersions}">
        <echo message="Version equals, no need for an update..."></echo>
    </target>

</project>

Die beiden "conditional properties" arbeiten richtig denn bei gleichem Inhalt der Dateien bekomme ich folgende Ausgabe:

Code:
prepare:

startDeployment:

runWithoutDeployment:
     [echo] Version equals, no need for an update...

main:
     [echo] version match true
     [echo] version mismatch false

BUILD SUCCESSFUL
Total time: 0 seconds

Aber wenn die Dateien unterschiedlich sind, bekomme ich diese Ausgabe:
Code:
prepare:

startDeployment:

runWithoutDeployment:

main:
     [echo] version match false
     [echo] version mismatch true

BUILD SUCCESSFUL
Total time: 0 seconds

Es fehlt die erwartete Ausgabe:
Code:
Version has changed, update gets started...
Die Variablen sind richtig gesetzt....

Weis jemand was hier falsch läuft. Sicher übersehe ich nur eine Kleinigkeit.
LG NetBu||
 

DexXxtrin

Erfahrenes Mitglied
Hallo NetBull

Du hast den Variabelnamen verschieden geschrieben. Bei der Abfrage für das Target hast du nonMatchingVersions.

Gruss DexXxtrin