2010-11-17 11 views
4

je dois gérer une version Java, et je ne sais pas comment gérer au mieux la version du logiciel afin qu'il puisse être affiché sur un dialogue A propos, etc.Versions en Java

Comment les gens le faire? Nous utilisons Maven, puis-je réutiliser la version telle que définie dans pom.xml? Je serais également intéressé de savoir comment cela se fait habituellement avec Ant.

Répondre

5

Vous pouvez obtenir la version Maven du fichier jar en chargeant le fichier pom.properties. Ceci est automatiquement créé par Maven dans les pots.

doit se trouver à l'intérieur du pot, à ce chemin

META-INF\maven\{groupId}\{artifactId}\pom.properties 

Ceci est mentionné un peu plus here.

+0

Merci, c'est plutôt joli :) Je craignais de devoir générer une sorte de version.properties (comme version.h en C) – forneo

3

Solution de base: Maven écrit les informations de version dans Manifest.xml dans le fichier jar. Lisez ce pot de Java et extrayez cette information.

  1. Force maven pour créer un plus detailed Manifest.

  2. Lire fichier jar de java:

    Manifest manifest = new JarFile("path/to/your.jar").getManifest(); 
    String version = manifest.getAttributes().getValue("Specification-Version:"); 
    
  3. Si vous avez besoin de trouver un endroit de votre pot:

    MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
    
1

Nous avons une grande équipe de développement il est donc plus utile pour nous de savoir exactement quelle version d'une version cible donnée dont nous parlons ou dont nous parlons. C'est pourquoi vous verrez les gens inclure le numéro de build dans leurs informations de version. Personnellement, tout est un label arbitraire et l'horodatage de la construction au format AAAAMMjjHHmmss (ou similaire) fournit une belle version naturellement triable.

Le maven-resource-plugin vous permet de définir une chaîne de filtre à remplacer par une valeur lors de la génération de vos fichiers JAR. Alors lisez juste la valeur comme n'importe quelle autre propriété d'application.