Wie speichern Sie die Versionsinformationen von Subversion in EARs?

8

Beim Empfang eines Fehlerberichts oder einer Es-ist-nicht-Arbeit-Nachricht ist eine meiner Initialfragen immer welche Version? Mit einer anderen Builds in vielen Phasen der Prüfung, Planung und Bereitstellung ist dies oft eine nicht-triviale Frage.

Wenn ich Java JAR-Dateien (ear, jar, rar, war) veröffentlichen möchte, würde ich gerne in / in JAR schauen und zu demselben Zweig, derselben Version oder demselben Tag wechseln können, der die Quelle der Veröffentlichung war JAR.

Wie kann ich den amt-Build-Prozess am besten so anpassen, dass die Versionsinformationen im svn-Checkout im erstellten Build verbleiben?

Ich dachte nach:

  • eine VERSION-Datei hinzufügen, aber mit welchem ​​Inhalt?
  • speichert Informationen in der META-INF-Datei, aber unter welcher Eigenschaft mit welchem ​​Inhalt?
  • Kopieren von Quellen in das Ergebnisarchiv
  • hat svn: properties zu allen Quellen mit Schlüsselwörtern an Stellen hinzugefügt, an denen der Compiler sie belassen soll

Ich benutzte den svnversion-Ansatz (den akzeptierten anwser), weil er den gesamten Teilbaum scannt, im Gegensatz zu svn info, das nur die aktuelle Datei / das aktuelle Verzeichnis betrachtet. Dazu habe ich die SVN-Aufgabe in der ant-Datei definiert, um sie portabler zu machen.

%Vor%

Nicht alle Builds führen zu Webservices. Die EAR-Datei vor der Bereitstellung muss aufgrund der Aktualisierung auf dem Anwendungsserver den gleichen Namen erhalten. Die Datei ausführbar zu machen ist immer noch eine Option, aber bis dahin habe ich nur eine Versionsinformationsdatei hinzugefügt.

%Vor%

Refs:
svnrevision: Ссылка
svn info Ссылка subclipse svn task: Ссылка Svn-Client: Ссылка

    
Rene 05.10.2008, 11:11
quelle

9 Antworten

5

Verwenden Sie den Befehl svnversion in Ihrem Ant-Skript, um die Revisionsnummer zu erhalten:

%Vor%

Dann verwenden Sie die Eigenschaft $ {svnversion} irgendwo in Ihrer EAR. Wir fügen den Namen der EAR-Datei ein, aber Sie können ihn auch in eine Readme- oder Versionsdatei innerhalb des EAR einfügen oder die Version in der EAR META-INF / manifest.mf angeben:

%Vor%     
Peter Hilton 05.10.2008, 12:52
quelle
4

Sie möchten die Subversion-Zweigstelle und die Repository-Nummer angeben. Wie in Wie kann auf die aktuelle Build-Nummer von Subversion zugegriffen werden? Der Befehl svn info gibt Ihnen diese Informationen, die Sie dann zum Erstellen einer VERSION-Datei oder zum Platzieren in einer der anderen Dateien verwenden können, die Sie in Ihre * AR-Dateien einbauen. Wenn Sie nichts anderes im Sinn haben, können Sie die XmlProperty Ant-Aufgabe verwenden, um die relevanten Informationen zu extrahieren von der Ausgabe deines svn info - XML-Befehl

    
Blair Conrad 05.10.2008 11:55
quelle
3

Sehen Sie sich das jreleaseinfo -Projekt an. Enthält eine ANT-Task, die eine Java-Klasse generieren kann, die zur Laufzeit aufgerufen werden kann, um die Release-Informationen für Ihr Projekt anzuzeigen.

Ich mag seine Einfachheit.

    
Mark O'Connor 02.04.2010 11:20
quelle
2

Siehe auch diese Frage: Build- und Versionsnummerierung für Java-Projekte (ant, cvs, hudson)

Es enthält einige hilfreiche Code-Snippets.

    
Ed Brannin 21.05.2010 21:35
quelle
1

Von ganz oben. Ein Tag für jedes Glas bauen?

    
svrist 05.10.2008 11:51
quelle
1

Wir haben den ersten Teil unseres Builds erstellt eine version.txt-Datei im Stammverzeichnis des Pakets und dump das Tag verwendet, um den Code aus (in unserem Fall) CVS zu überprüfen ... Darüber hinaus der letzte Teil unserer build process prüft die voll aufgebaute EAR zurück in CVS für zukünftige Referenz.

Wenn wir also ein Problem mit einer Webanwendung haben - es ist nur ein Fall, den Reporter zu bitten, /app/version.txt zu drücken - können wir von dort aus den jeweiligen Build-Verlauf in CVS aufrufen, um die relevanten Komponenten zu finden ( behandelt verschiedene Versionen von Bibliotheken in Apps), um den Fehler zu finden.

Ich bin mir nicht sicher, wie viel Hilfe das für unser Unterstützungsvolk ist - aber es ist definitiv etwas, über das sie sich beschweren, dass sie nicht da sind!

    
Martin 05.10.2008 11:55
quelle
1

Erstellen Sie automatische Builds und platzieren Sie ein Tag (mit einem Datumsstempel) auf der Codebasis, wenn der Build erfolgreich ist (mit Unittest ofcourse).

Liefern Sie in Ihrem Übermittlungsprozess nur gekennzeichnete Builds an den Kunden. Auf diese Weise haben Sie die Kontrolle und können den Tag-Namen irgendwo in eine readme.txt platzieren, oder der Dateiname der Ear-Datei spiegelt den Tag-Namen wider.

Ich habe persönlich zurück zu CVS gewechselt, und das ist einer der Gründe. In CVS kann ich eine Klasse melden lassen. Alle meine JAR-Dateien enthalten eine "Hauptdatei", die sie lauffähig macht. Bei Supportfragen bitte ich den Kunden, ein "java -jar somejar.jar" zu machen und die Ausgabe neben der Frage an mich zu senden.

Auf diese Weise bin ich mir des Builds sicher, den sie verwenden, und ich kann sogar Informationen wie Java-Version, Betriebssystemtyp und -version haben. Ohne dass der Kunde seltsame Fragen beantworten muss.

Es ist einfach, aber sehr effektiv.

    
Rolf 05.10.2008 11:57
quelle
1

Warum schreiben Sie die Build-Nummer nicht in eine Eigenschaftendatei ... das kann dann einfach vom Java gelesen und in einer Hilfe | ausgegeben werden Über den Dialog (Applet / Anwendung), die Fußzeile der Webseite oder was auch immer eine andere GUI haben könnte.

(Siehe die Fußzeile auf jeder SOF-Seite .... hat dort die SVN Versionsnummer.)

Scheint eine Last leichter als in der WAR / EAR / JAR etc. einfach zu schauen?

    
cagcowboy 05.10.2008 11:59
quelle
0

Ich speichere die absolute Repository-Revision als Teil meiner vollständigen Versionsnummer. Dies gibt den Leuten einen schnellen Blick, um zu sehen, ob eine gegebene Änderung in einer gegebenen Version ist oder nicht.

Wir speichern auch die Versionsnummer / das Erstellungsdatum / etc in der Manifestdatei des Ohres als benutzerdefinierte Eigenschaften, diese sind meistens nur informativ. Wir speichern es auch in einer Eigenschaftendatei, die in unserem Jar enthalten ist, so dass die Anwendung es lesen kann.

    
Mike Miller 20.10.2008 20:49
quelle

Tags und Links