Anzeige von Versionsinformationen

In meinem aktuellen Projekt entwickeln wir einen WebClient mit Hilfe von Struts2 und müssen diesen auch ab und an einem Team von Testern auf einem dafür bereitgestellten Application Server bereitstellen. Nun haben wir nicht immer im Überblick von wann die letzte Version auf dem Testsystem ist, weshalb ich einen simplen Weg gesucht habe, das Versionsdatum anzuzeigen.

Auf Irrwegen…

Mein erster Weg führte mich in die Richtung die Information aus den Quelldateien herauszulesen und die VersionsNr, Datum und Autor von Subversion (SVN) automatisch beim CheckInn pflegen zu lassen. Wer Eclipse und ein SVN nutzt, muss dazu lediglich das „Team Menu“ des Projekts öffnen und über „Set Property“ die gewünschten „svn:keywords“ hinzufügen, z.B. Revision, LastChangedDate, Author.


Danach kann man in seinem Quellen über die Platzhalter $Revision$, $Author$, $Date$ die entsprechenden Information automatisch einfügen lassen.

[code=“java“]

**
* @version $Revision: 237 $
* @author $Author: swatermeyer$
* @since $Date: 2009-08-25 10:51:51 +0200 (Di, 25 Aug 2009) $
*
* @param
*/
public class ActionTester extends TestCase {

[/code]

Die Lösung funktioniert zwar so wie sie soll, ist aber für meine Zwecke nicht zu gebrauchen. Der Haken ist, dass ich dann im Footer meiner Seite immer das selbe Datum angezeigt bekomme und zwar jenes, welches das der letzten Änderung der Datei ist. Ziel ist es jedoch, das aktuelle Datum des Builds einzutragen und anzeigen zu lassen.

Die Lösung naht…

Mein zweiter Weg führte dann über ANT zum gewünschten Ziel. In ANT habe ich ein neues Target definiert und lasse mir so eine kleine Klasse mit einem public static String generieren, der das aktuelle Datum inne hat.

[code=“xml“]




package ${src-metaInfo-pkg};

public class BuildInfo {
public static final String BUILDATE=“${TODAY}“;
}

[/code]

So kann ich von überall aus auf dieses Datum zugreifen und es mir in meiner JSP  Seite anzeigen lassen.

[code=“html“]

Version: <% out.print(BuildInfo.BUILDATE); %>

[/code]

Das ist einfach und funktioniert super. Natürlich lassen sich auch so weitere Versionsinformationen in die Klasse hineingenerieren. Ein paar weiterführende Links, die auch ich bei meiner Recherche verwendet haben folgen kommentarlos: