Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    9.3.2. Référence à une propriété

    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 :

    env

    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).

    project

    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}.

    settings

    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.

    Note

    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 :

    Propriétés système en Java

    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.

    x

    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.