Im folgenden wird beschrieben, wie man ANT nutzen kann, um eine automatische Versionsaktualisierung beim Bauen eines Projektes durchzuführen.
ANT kann Property-Dateien lesen und deren Variablen aktualisieren. Dabei muss die Property-Datei aber im Textformat vorliegen. Mit Hilfe des folgenden Tasks kann man dann z.B. die Datei Version.txt öffnen, die Variable BuildLevel vom Typen int auslesen und inkrementieren.
<target name="incrementBuild">
<propertyfile file="./properties/Version.txt">
<entry key="BuildLevel" type="int" default="0" operation="+"/>
</propertyfile>
</target>
Sollte die Variable BuildLevel nicht gefunden werden, so wird ihr der Wert 0 zugewiesen
Der Inhalt einer Properties-Datei könnte z.B. wie folgt aussehen:
BuildLevel=120
MajorBuild=1
MinorBuild=0
PatchLevel=0
Will man nun auf die Versionsinformationen zugreifen, so bietet es sich an, die Property-Datei in das JAR Archiv des Programms einzubetten. Man kann die Datei dann einfach auslesen. Dies erreicht man, indem mann die Versionsdatei in die build Verzeichnisstruktur kopiert und dann mit in das JAR Archiv einbettet. Ein copy-Task übernimmt das Kopieren der Datei:
<target name="copy">Nun muss man nur noch die die generierten Class-Dateien und die Datei mit den Versionsinformationen in eine JAR Datei einbetten.
<!-- Version text file-->
<copy
file="properties${file.separator}Version.txt"
tofile="build${file.separator}properties${file.separator}Version.txt"
/>
</target>
<target name="dist" depends="compile, copy">Mit Hilfe der Methode getResource() kann dann in dem Programm auf die Properties-Datei zugegriffen werden.
<jar jarfile="myJar.jar" basedir="build">
<manifest>
<attribute name="Built-By" value="ameyer"/>
<attribute name="Main-Class" value="MainClass"/>
</manifest>
</jar>
</target>
InputStream is = getClass().class.getResourceAsStream("properties/Version.txt");
Properties props = new Properties();
try {
props.load(is);
} catch (IOException e) {
e.printStackTrace();
}




