Versionierung meines Programmes

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi!

Ich habe mit Java immer wieder Probleme mit der Versionierung:
An mehreren Stellen gebe ich eine Versionsnummer meines Programmes aus. Das Problem: Diese Nummern sind hardgecodet. Wenn ich beschließe, die Versionsnummer zu ändern, muss ich dies an mehreren Stellen im Code machen. Dabei vergisst man natürlich auch leicht mal eine Stelle und schon hat man eine Inkonsistenz. Ich könnte nun natürlich einfach eine global zugängliche Konstante bzw. Methode mit der Versionsnummer einführen, aber bevor ich diesen Schritt mache, möchte ich fragen, ob es dafür eventuell bereits Mechanismen gibt? In MS Visual Studio gab es dafür beispielsweise einen Dialog, in dem ich die Nummer festlegen konnte (und auch eine automatische Erhöhung veranlassen konnte)- daraufhin konnte ich aus dem Code mit App.Major, App.Minor und App.Revision auf die einzelnen Versionsnummern zugreifen. Gibt es das auch in Java/NetBeans?

LG
Fabian
 
S

SlaterB

Gast
wenn du
public static final String VERSION= "5.4.3";
hast und editieren kannst,
wofür brauchst du dann einen Dialog?

denkbar wäre auch, die Version aus einer Textdatei zu laden
 
M

maki

Gast
Welches SCM benutzt du denn?
Um was für ein Programm handelt es sich?
 

HoaX

Top Contributor
Ich lasse mir von ant die Buildnummer inkrementieren und zusammen mit der Version in ein Propertiesfile schreiben. Zum Auslesen hab ich mir eine Klasse "Version" gemacht die sich um das auslesen und bereitstellen kümmert.

aber jeder macht das anders ...
 

foobar

Top Contributor
HoaX hat gesagt.:
Ich lasse mir von ant die Buildnummer inkrementieren und zusammen mit der Version in ein Propertiesfile schreiben. Zum Auslesen hab ich mir eine Klasse "Version" gemacht die sich um das auslesen und bereitstellen kümmert.

aber jeder macht das anders ...

Das mache ich genauso. Dieses Verfahren hat auch noch den Vorteil, daß man zusätzlich einen Timestamp ausgeben kann.
 
G

Guest

Gast
Hi!

Erstmal vielen Dank für die zahlreichen Antworten!

Wie muss ich denn Ant so einstellen, dass es sich wie von euch beschrieben verhält?
 
M

maki

Gast
Buildnummer ist imho nicht mehr wichtig wenn man SVN einsetzt, die Revision Number ist eindeutig.
 

ARadauer

Top Contributor
HoaX hat gesagt.:
Ich lasse mir von ant die Buildnummer inkrementieren und zusammen mit der Version in ein Propertiesfile schreiben. Zum Auslesen hab ich mir eine Klasse "Version" gemacht die sich um das auslesen und bereitstellen kümmert.

aber jeder macht das anders ...

kann da bitte mal wer ein beispiel posten, wie sieht das im ant script aus? hab nicht sehr viel ahnung von ant...
 
T

tuxedo

Gast
Also ich mach das über die SVN Revisionsnummer:

https://simon.dev.java.net/source/browse/simon/trunk/SIMON/simon/build.xml?annotate=253

Alles was ich dazu brauche ist das SVN Kommandozeilentool.
Hab mir ein Bash-Script gebaut, das, per cronjob getriggered, einmal pro Nacht schaut ob sich im SVN was getan hat, und wenn ja, eine neue Version zusammenbaut und publiziert (hier: http://root1.de/node/11)

Nettes Gimmick: Die Versionsnummer gebe ich in der Ant-File vor, welche dann vor dem compilieren in den Code, zusammen mit der SVN Revision und einem Zeitstempel, "eingepflanzt" wird (mit hilfe der der filter token Geschichte ab Zeile 100 der build.xml)

- Alex
 

foobar

Top Contributor
Mit ant wird eine build.properties im src-Ordner angelegt:

Code:
<target name="compile" description="compile it">
....
  	<tstamp/>
    <property name="build.application" value="${DSTAMP}-${TSTAMP}"/>
	<propertyfile file="${application.prop}" comment="build properties">
	  <entry  key="build"    value="${build.application}"/>
	  <entry  key="name"     value="${application.name}"/>
	  <entry  key="version"  value="${application.version}"/>
	</propertyfile>
....

Im Javacode macht man dann sowas:

Code:
public Properties getBuildProperties() throws IOException
    {
         InputStream in =  getClass().getResourceAsStream("/mypackage/build.properties");
         Properties p   = new Properties();
         if (null == in) return new Properties();
            p.load( in );
         return p;
    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JDK installieren Versionierung von JRE vs. JDK Allgemeine Java-Themen 4
P Versionierung Allgemeine Java-Themen 3
N Versionierung von jar-Files Allgemeine Java-Themen 5
A Versionierung von Class-Files Allgemeine Java-Themen 10
Scream_ilias passwort meines pc per brute force methode knacken Allgemeine Java-Themen 4
F Was ist der Dateityp meines Parameters für die Main Methode. Allgemeine Java-Themen 6
D Bezüglich Design meines Codes Allgemeine Java-Themen 1
K Eclipse Fehler beim Ausführen meines Programms in Eclipse Allgemeine Java-Themen 11
P Fehler beim Export meines Lernbeispiel von Ralf Ebert Allgemeine Java-Themen 3
V Eclipse braucht ewig zum Starten meines Codes Allgemeine Java-Themen 21
S Aufruf meines Programms Allgemeine Java-Themen 2
N Pausieren eines Programmes Allgemeine Java-Themen 4
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
DStrohma Grundsätzliche Fragen zum Aufbau eines komplexeren Programmes Allgemeine Java-Themen 8
E Focus nach Start eines externen Programmes Allgemeine Java-Themen 6
A Umstellung eines(riesen)Programmes auf Java:Was bietet Java Allgemeine Java-Themen 18
C nur einen Prozess eines Programmes erlauben Allgemeine Java-Themen 8
A Mehrsprachigkeit eines Programmes Allgemeine Java-Themen 13
M Test eines Programmes Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben