| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
Un POM peut contenir des références à des propriétés, elles sont précédées par le signe dollar et entourées par des accolades. Par exemple, regardons le POM suivant :
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>project-a</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<finalName>${project.groupId}-${project.artifactId}</finalName>
</build>
</project>
Si vous écrivez ce XML dans un fichier pom.xml et que vous exécutez
la commande mvn help:effective-pom, vous verrez le message suivant s'afficher sur la sortie
standard :
... <finalName>org.sonatype.mavenbook-project-a</finalName> ...
Quand Maven lit un POM, il remplace les références vers des propriétés lorsqu'il charge le
XML du POM. On rencontre fréquemment des propriétés dans un usage avancé de
Maven. Ces propriétés sont similaires à celles que l'on trouve dans d'autres systèmes comme Ant ou Velocity. Il
s'agit tout simplement de variables délimitées par ${...}. Maven fournit
trois variables implicites qui peuvent être utilisées pour accéder aux variables d'environnement, aux informations
du POM et à votre configuration de Maven :
La variable env permet d'accéder aux variables d'environnement de votre système d'exploitation ou de votre shell. Par exemple, une référence à
${env.PATH} dans un POM Maven serait remplacée par
le contenu de la variable d'environnement ${PATH} (ou %PATH% sous
Windows).
La variable project permet d'accéder au POM. Vous pouvez utiliser un chemin pavé de points ('.') pour référencer la
valeur d'un élément du POM. Par exemple, dans cette section nous avons utilisé le
groupId et l'artifactId pour définir la valeur de l'élément
finalName dans la configuration du build. La syntaxe pour cette référence était :
${project.groupId}-${project.artifactId}.
La variable settings permet d'accéder aux informations de votre configuration de Maven. Là encore, vous pouvez utiliser un chemin pavé de points (.)
pour référencer la valeur d'un élément du fichier settings.xml. Par
exemple, ${settings.offline} ferait référence à la valeur de l'élément
offline du fichier ~/.m2/settings.xml.
Vous pouvez rencontrer d'anciens builds qui utilisent ${pom.xxx} ou simplement
${xxx} pour référencer des propriétés du POM. Ces méthodes ont été
marquées comme abandonnées, et vous ne devriez utiliser que ${project.xxx}.
En plus de ces trois variables implicites, vous pouvez référencer les propriétés système et toute propriété configurée dans un POM Maven ou dans un profil de build :
Toutes les propriétés accessibles via la méthode getProperties() de la classe
java.lang.System sont visibles comme propriétés du
POM. Voici quelques exemples de propriétés système :
${user.name}, ${user.home},
${java.home}, et ${os.name}. Une liste complète des propriétés
système se trouve dans la Javadoc de la classe
java.lang.System.
Il est possible de définir des propriétés supplémentaires grâce à la balise properties, soit dans un fichier pom.xml,
dans le fichier settings.xml, ou enfin en les
chargeant depuis des fichiers externes. Si vous définissez une propriété fooBar
dans votre fichier pom.xml, cette propriété est référencée par
${fooBar}. Ces propriétés de configuration sont très pratiques lorsque pour construire
votre système, vous devez filtrer des ressources que vous déployez sur différentes plateformes. Voici la
syntaxe pour déclarer ${foo}=bar dans un POM:
<properties> <foo>bar</foo> </properties>
Pour une liste plus détaillée des propriétés disponibles, lisez le Chapitre 15, Propriétés et filtrage des ressources.