www.medienpunkt.com

  • Schrift vergrößern
  • Standard Schriftgröße
  • Schriftgröße verkleinern
Home

Einfaches Versionsmanagement mit ANT

E-Mail Drucken

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">
<!-- Version text file-->
<copy
file="properties${file.separator}Version.txt"
tofile="build${file.separator}properties${file.separator}Version.txt"
/>
</target>
Nun muss man nur noch die die generierten Class-Dateien und die Datei mit den Versionsinformationen in eine JAR Datei einbetten.
<target name="dist" depends="compile, copy">
<jar jarfile="myJar.jar" basedir="build">
<manifest>
<attribute name="Built-By" value="ameyer"/>
<attribute name="Main-Class" value="MainClass"/>
</manifest>
</jar>
</target>
Mit Hilfe der Methode getResource() kann dann in dem Programm auf die Properties-Datei zugegriffen werden.
InputStream is = getClass().class.getResourceAsStream("properties/Version.txt");
Properties props = new Properties();
try {
props.load(is);
} catch (IOException e) {
e.printStackTrace();
}
 

Anmeldung