2011-03-10 3 views
6

Je souhaite ajouter une numérotation de version à mon application Java (dans ce cas, un portlet Vaadin) qui comporte le numéro de version dans la vue d'aide. Le fait est que ce numéro de version est celui défini dans le fichier POM de mon Maven (par exemple 1.1.5-SNAPSHOT) et c'est celui que nous allons changer (à la sortie par exemple).Charger le numéro de version Maven POM dans Java Projet

Une idée sur la façon de le sortir du POM et dans (par exemple, une chaîne) en Java? (Si cela est possible)

Merci

Répondre

8

Utilisez un filtré fichier de propriétés contenant la ligne

version=${project.version} 

et charger ce fichier de propriétés du classpath dans votre programme Java.

+0

Qui propriétés définit fichier et puis-je obtenir la valeur d'un project.version à partir d'une méthode Java sans utiliser un fichier de propriétés etc. Pouvez-vous vérifier ma question? http://stackoverflow.com/questions/14760638/how-to-get-maven-project-version-from-java-class-as-like-at-pom – kamaci

4

Il existe de nombreuses solutions à ce problème

Mais je préférerais certainement le premier, comme l'accès à MANIFEST.MF est assez facile en Java

+0

Comment accèderait-on aux informations contenues dans le manifeste dans Java? application? –

+1

@Deejay laissez-moi stackoverflow pour vous: http://stackoverflow.com/q/615493/15619 – Riduidel

+0

Hehehe, acclamations :) –

2

La version dans le POM est disponible en tant que propriété "project.version". Exprimé en $ {} project.version

donc vous devriez être en mesure d'utiliser les ressources de filtrage:

http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

La plus belle approche serait probablement de filtrer (et remplacer) un fichier de propriétés ou d'un descripteur de déploiement.

2

Ou vous pourriez lire le maven pom.properties de classpath. Les pom.properties sont situés à:
META-INF/maven/groupId/artifactId/pom.properties

+0

Cela causerait une dépendance sur la construction de Maven. Je préfère utiliser le fichier MANIFEST.MF qui contient les mêmes informations définies de manière standard. – jjmontes