Frage

Was ist die beste Art und Weise der Darstellung / die Revisionsnummer in einem Java-Webapp mit?

wir nur Ameise verwenden unsere .war-Archiv zu bauen, keine Build oder so. ich würde hoffen, es war eine Art, wenn $ ref, die ich in einer Ressourcendatei schreiben könnte, aber dies wird nur dann aktualisiert, wenn die betreffende Datei festgelegt wird. Ich brauche es global.

, was würden Sie empfehlen? post-commit Trigger, die bestimmte Dateien aktualisieren? benutzerdefinierte ant-Skripte? ist es ein nicht-hacky Weg, dies zu tun? oder es besser, meine eigene Versionsnummer unabhängig von SVN zu haben.

edit: tolle Vorschläge! Vielen Dank für die Antworten!

War es hilfreich?

Lösung

Es gibt ein paar von Ant-Tasks, die dies für Sie tun können.

SvnAnt Aufgabe von tigris ist die älteste.

Die Dokumentation ist hier - insbesondere einen Blick auf das info Element das macht die Revisionsnummer der Subversion-Repository als Ant Eigenschaft, die es rev nennt. Sie können diesen Wert auf Ihre resouces Datei schreiben, um die normalen Ant substituion Mechanismen.

Jemand hat auch eine simillar rel="nofollow (einfacher) Aufgabe auf Google Code-Hosting - nie benutzt es aber so kann nicht kommentieren.

Jede dieser scheint, wie der sauberste Weg zu mir, wenn Sie bereits Ant haben in Ihrer Build.

Andere Tipps

Wir verwenden die folgende Ant-Task die SVN-Version in einem Attribute in dem Glas enthalten, zusammen mit der Version von anderen Paketen, die verwendet werden

<target name="package" depends="compile" description="Package up the project as a jar">
<!-- Create the subversion version string -->
<exec executable="svnversion" failifexecutionfails="no" outputproperty="version">
  <arg value="."/> 
  <arg value="-n"/>
</exec>
<!-- Create the time stamp -->
<tstamp>
  <format property="timeAndDate" pattern="HH:mm d-MMMM-yyyy"/>
</tstamp>

<jar destfile="simfraserv.jar">
  <manifest>
    <attribute name="Built-By"                value="${user.name} on ${time.date}" />
    <attribute name="Implementation-Version"  value="${svn.version}" />
    <attribute name="Implementation-Java"     value="${java.vendor} ${java.version}" />
    <attribute name="Implementation-Build-OS" value="${os.name} ${os.arch} ${os.version}" />
    <attribute name="JVM-Version"             value="${common.sourcelevel}+" />        
  </manifest>
  <fileset dir="bin">
    <include name="**/*.class"/>
  </fileset>
  <fileset dir="src">
    <include name="**"/>
  </fileset>
</jar>
</target>

Und dann können Sie es in Ihrem Webapp wie diese zugreifen

String version = this.getClass().getPackage().getImplementationVersion();

Wenn Sie ant verwenden Sie diese Aufgabe definieren:

 <target name="version">
<exec executable="svn" output="svninfo.xml" failonerror="true">
  <arg line="info --xml" />
</exec>
<xmlproperty file="svninfo.xml" collapseattributes="true" />
<echo message="SVN Revision: ${info.entry.commit.revision}"/>
<property name="revision" value="${info.entry.commit.revision}" />
</target>

und Sie den Revisionswert, wo Sie wollen.

Siehe dieses Themas .

Meine Favoriten aus diesem Thread Dumping nur $Id:$ in Ihrem Code, wo Sie die Revision ID mögen. SVN wird mit den realen Daten füllen, dass, wenn Sie einen Export zu tun.

Wenn Sie Windows verwenden Sie bei SubWCRev.exe aussehen könnte, die mit Schildkröte kommt.

Es gibt die aktuelle Repository-Revision und wird mit dem $ WCREV $ ersetzen, können Sie dies in Ihrem web.xml enthalten könnten als ein Kontext param sagen und bekommt es dann von dort aus.

Vor der Webapp verpackt ist, svn info laufen und leiten Sie die Ausgabe zu einem gewissen Datei in WEB-INF / classes. Wenn die Webapp startet, analysieren Sie diese Datei und hat es in dem Servlet-Kontext oder einem ähnlichen Ort gebunkert. In der Fußzeile jeder Seite angezeigt werden diese Version - wenn Sie so etwas wie Fliesen oder SiteMesh verwenden, diese Änderung in einer Datei nur getan werden muss,

.

Maven Benutzer können die Maven-Buildnumber-Plugin versuchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top