mika-el
4/17/2018 - 9:09 AM

Projet

Définire une propriété

<project>
    ...
    <!-- =============================================================== -->
    <!-- Properties -->
    <!-- =============================================================== -->
    <properties>
        <maPropriete>la valeur de la propriété</maPropriete>
        <uneAutrePropriete>la valeur de la propriété</uneAutrePropriete>
    </properties>
    ...
</project>

Utiliser les propriétés

L'utilisation des propriétés n'est pas limitée au fichier pom.xml. En effet, il est possible de demander à Maven de remplacer les propriétés aussi dans les fichiers dits resource. Cela s'appelle filter des fichiers ressource dans le jargon de Maven.

<project>
    ...
    <properties>
        <apache.struts.version>2.5.10.1</apache.struts.version>
    </properties>
    ...
    <dependencies>
        <!-- ===== Apache Struts ===== -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>${apache.struts.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-json-plugin</artifactId>
            <version>${apache.struts.version}</version>
        </dependency>
    </dependencies>
    ...
</project>

Propriétés pré-définies

En plus des propriétés que vous pouvez définir vous-même grâce à la balise , il existe également des propriétés pré-définies :

  • project.basedir : donne le chemin vers le répertoire de base du projet, c'est-à-dire la racine de votre projet où se trouve le fichier pom.xml.
  • project.baseUri : donne le chemin vers le répertoire de base du projet, mais sous forme d'URI.
  • maven.build.timestamp : donne l'horodatage du lancement du build Maven.

Propriétés particulières

Vous pouvez aussi accéder à des propriétés particulières grâce aux préfixes suivants :

  • env. : permet de renvoyer la valeur d'une variable d'environnement. Par exemple, ${env.PATH} renvoie la valeur de la variable d'environnement PATH.
  • settings. : renvoie la valeur d'une balise dans le(s) fichier(s) settings.xml utilisé(s) par Maven. Utilise la notation pointée comme pour les propriétés de project.
  • java. : renvoie la valeur d'une propriété système de Java. Ces propriétés sont les mêmes que celles accessibles via java.lang.System.getProperties(). Par exemple, ${java.version} renvoie la version de Java. Pour plus de détails, consultez la JavaDoc.
  • project. : renvoie la valeur d'une balise dans le fichier pom.xml du projet, en utilisant le point (.) comme séparateur de chemin pour les sous-balises. Par exemple,<project><organization><name>1.0</name></organization></project> est accessible via ${project.organization.name}.

La plupart des conventions établies par Maven (chemin des sources, chemin de génération...) sont mises en œuvre grâce au Super POM. En effet, de base, le POM d'un projet hérite du Super POM qui définit les valeurs par défaut que va utiliser Maven.

Ne vous étonnez donc pas si ${project.build.directory} vous renvoie une valeur alors que vous ne l'avez pas définie dans votre fichier pom.xml. Elle provient du Super POM !

Créer un projet

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.1

Compiler et test jUnit

mvn package

Le projet sera compilé ici: target/appnam-1.0-SNAPSHOT.jar

Lancement de l'application

java -cp target/mon-appli-1.0-SNAPSHOT.jar org.exemple.demo.App

pom.xml : POM (Project Object Model)

Doc pom.xml

https://maven.apache.org/pom.html

Version de projet

Toujours par convention, Maven donne un statut particulier aux versions ayant pour suffixe -SNAPSHOT. En effet, cela veut dire que le code de cette version de l'application n'est pas figé. C'est une version en cours de développement. Par opposition, si la version ne se termine pas par le suffixe -SNAPSHOT, cela signifie qu'il s'agit d'une release de l'application et que son code est figé. Les versions snapshot font l'objet de traitements particuliers, notamment dans la gestion des dépendances.