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


    15.2. Propriétés Maven

    Vous pouvez utiliser les propriétés Maven dans des fichiers pom.xml ou dans n'importe quel fichier ressource contrôlé par la fonctionnalité de filtrage du plugin Maven Resource. Une propriété est toujours préfixée par ${ et suffixée par }. Par exemple, pour référencer la propriété project.version, vous devez utiliser la notation suivante :

    ${project.version}

    Des propriétés implicites sont directement disponibles à partir de n'importe quel projet Maven, en voici la liste :

    project.*

    POM (Project Object Model) Maven. Vous pouvez utiliser le préfixe project.* pour référencer des valeurs du POM.

    settings.*

    Configuration Maven. Vous pouvez utilisez le préfixe settings.* pour référencer des valeurs du fichier ~/.m2/settings.xml.

    env.*

    Les variables d'environement, comme PATH et M2_HOME, peuvent être référencées en utilisant le préfixe env.*.

    Propriétés Système

    Les propriétés pouvant être récupérées par la méthode System.getProperty() peuvent être utilisées directement comme propriété Maven.

    En plus de ces propriétés implicites, l'utilisateur peut définir ses propres propriétés à partir du POM, du fichier de paramétrage ~/.m2/settings.xml ou dans un profil Maven. Les paragraphes suivants fournissent ainsi le détail des différentes propriétés disponibles dans un projet Maven.

    15.2.1. Propriétés d'un projet Maven

    Quand une propriété Maven est utilisée, son nom référence une propriété du POM. Plus précisément, vous référencez une propriété de la classe org.apache.maven.model.Model qui est exposée implicitement comme variable du projet. Quand vous référencez une propriété en utilisant l'une de ces variables implicites, vous utilisez la notation avec des 'points' pour référencer la propriété du bean Model correspondante. Par exemple, lorsque nous utilisons ${project.version}, en fait, vous invoquez la méthode getVersion() de l'instance du Model qui est exposée via la variable project.

    Le POM est également représenté dans le document pom.xml disponible dans tous les projets Maven. Tout ce qui se trouve dans le POM peut donc être utilisé en propriété. Pour une présentation complète de la structure du POM, référez-vous à l'adresse http://maven.apache.org/ref/2.2.1/maven-model/maven.html. La liste ci-dessous récapitule quelques-unes des propriétés habituellement utilisées dans un projet Maven.

    project.groupId et project.version

    La majorité des projets multimodule partagent les mêmes groupId et version. Lorsque vous déclarez une interdépendance entre deux modules possédant les mêmes groupId et version, c'est souvent une bonne idée que d'utiliser des propriétés pour référencer ces valeurs :

    <dependencies>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>sibling-project</artifactId>
        <version>${project.version}</version>
      </dependency>
    </dependencies>
    project.artifactId

    L'artefactId d'un projet est souvent utilisé pour le nom de l'archive résultant du projet. Par exemple, dans un projet avec un packaging du type WAR, vous voudrez peut-être produire un fichier WAR sans que sa version apparaisse dans son nom. Pour cela, utilisez la propriété project.artifactId dans votre POM comme ceci :

    <build>
      <finalName>${project.artifactId}</finalName>
    </build>
    project.name et project.description

    Les nom et description du projet sont souvent utilisés dans la documentation. Au lieu d'avoir à maintenir ce contenu à plusieurs endroits, vous pouvez utiliser ces propriétés.

    project.build.*

    Vous ne devez jamais utiliser la valeur en dur target/classes pour référencer le répertoire destination de Maven. Une bonne pratique consiste à utiliser des propriétés pour référencer ce genre de répertoire.

    • project.build.sourceDirectory

    • project.build.scriptSourceDirectory

    • project.build.testSourceDirectory

    • project.build.outputDirectory

    • project.build.testOutputDirectory

    • project.build.directory

    Les propriétés sourceDirectory, scriptSourceDirectory et testSourceDirectory fournissent un accès aux répertoires source du projet. Les propriétés outputDirectory et testOutputDirectory fournissent un accès aux répertoires utilisés par Maven pour produire le bytecode et le résultat de son build. La propriété directory désigne le répertoire qui contient tous ces répertoires destination.

    Autres types de propriété

    Des centaines de propriétés sont utilisables à partir POM. La présentation complète de la structure du POM est disponible à l'adresse http://maven.apache.org/ref/2.2.1/maven-model/maven.html.

    Pour consulter la liste complète des propriétés disponibles dans le Model Maven, tournez-vous vers la Javadoc du projet maven-model à cette adresse http://maven.apache.org/ref/2.2.1/maven-model/apidocs/index.html. Une fois la Javadoc chargée, ouvrez la classe Model. À partir de la Javadoc de cette classe, vous devriez pouvoir naviguer sur les différentes propriétés du POM que vous pouvez utiliser. Par exemple, si vous désirez référencer le répertoire destination du build, vous pouvez donc utiliser cette Javadoc pour trouver quelle propriété référencer : model.getBuild().getOutputDirectory(). Cette méthode est accessible sous la forme d'une propriété par l'intermédiaire de la notation suivante : ${project.build.outputDirectory}.

    Pour plus d'informations à propos du module Maven Model, le module qui définit la structure du POM, consultez la page du projet Maven Model à l'adresse http://maven.apache.org/ref/2.2.1/maven-model.