Vous devez être membre et vous identifier pour publier un article.
Les visiteurs peuvent toutefois commenter chaque article par une réponse.
[maven] Utiliser les infos de maven dans une classe Java
Article publié le 20/12/2008 12:00:23Dans mes applications Java, j’utilise différents jars qui contiennent de nombreux codes dont j’ai souvent besoin. Maven est vraiment très pratique pour gérer les dépendances, et pour me générer automatiquement un jar exécutable.
Seulement, que ce soit pour une application exécutable ou un simple jar dont dépendent d’autres applications, il est bon de pouvoir afficher un "A propos" qui nous retourne certaines informations, comme le numéro de version.
Puisque toutes ces informations se trouvent dans un pom.xml (Project Object Model), il serait redondant (et peu souple au niveau de la maintenance) de retrouver ces informations dans un fichier properties ou pire encore, codées en dur.
Ma première tentative fut d’utiliser le fichier que maven génère dans le jar :
Code Java (42 lignes)
package be.gaudry.model.config; import java.util.Properties; /** * @date 20 déc. 2008 * @author Steph GAUDRY * */ public class POMHelper { static{ try { props.load(POMHelper.class.getClassLoader().getResourceAsStream("META-INF/maven/be.gaudry.broldev/broldev.core.model/pom.properties")); } } /** * * @return the version or null */ return props.getProperty("version"); } /** * * @return the groupId or null */ return props.getProperty("groupId"); } /** * * @return the artifactId or null */ return props.getProperty("artifactId"); } }
Nous pouvons ensuite lier avec un fichier de langue le message correct en fonction que la méthode retourne null, ou un String.
Mais cela ne me convenait pas, alors j’ai cherché du côté de maven s’il pouvait faire le travail pour moi, et il suffit d’ajouter une ligne dans le pom pour mettre ces informations à disposition lors de la commande maven "install" ou "assembly" :
Code XML (27 lignes)
‹!-- Adds a Class-Path entry to the manifest to do an executable jar --› ‹plugin› ‹groupId›org.apache.maven.plugins‹/groupId› ‹artifactId›maven-jar-plugin‹/artifactId› ‹configuration› ‹archive› ‹manifest› ‹addClasspath›true‹/addClasspath› ‹mainClass› be.gaudry.about.AboutBrolDevModel ‹/mainClass› ‹!-- Maven already provides a hook to have the version number written to a jars MANIFEST.MF This instructs Maven to add the following headers to the MANIFEST.MF of your jar: Implementation-Title: display-version Implementation-Version: 1.0-SNAPSHOT Implementation-Vendor-Id: test --› ‹addDefaultImplementationEntries›true‹/addDefaultImplementationEntries› ‹/manifest› ‹/archive› ‹/configuration› ‹/plugin›
Il suffit ensuite d’invoquer la méthode suivante :
Code Java (1 ligne)
POMHelper.class.getPackage().getImplementationVersion();
Vous pouvez remplacer POMHelper par le nom de votre classe.
Un article de Steph
Source : indéterminée
Nederlandse vertaling
U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.
Bij voorbaat dank.
Document heeft de 13/09/2004 gemaakt, de laatste keer de 26/10/2018 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/ast-rf-447.html
De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.