Même s'il est un peu daté, l'archétype org.apache.maven.archetypes:maven-archetype-quickstart
permet de créer un squelette de projet Maven/Java.
mvn archetype:generate \
-DinteractiveMode=false \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=1.1 \
-DgroupId=fr.uvsq.poo \
-DartifactId=maven-exemple \
-Dpackage=fr.uvsq.poo.compte
git init
git add .
git commit -m"Initialise le projet Maven"
Après ces commandes, le dépôt comporte un commit sur la branche master.
Tout d'abord, il est nécessaire de créer le dépôt distant sur la forge. Ensuite, il suffit de le lier avec le dépôt local.
git remote add origin [email protected]:hal91190/maven-exemple.git
git push -u origin master
On génère un jar
du projet.
mvn package
Cette commande crée un répertoire target
contenant les résultats de la construction du projet.
Ce répertoire ne doit pas être ajouté au dépôt git.
On ajoute donc un fichier .gitignore
à partir du modèle se trouvant sur github.
La plupart des IDEs permettent d'importer un projet Maven.
Il est préférable de ne pas ajouter les fichiers spécifiques à l'IDE dans le dépôt git.
On modifie donc le .gitignore
en conséquence.
Il suffit pour cela d'ajouter deux propriétés dans le pom.xml
.
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
On modifie la dépendance dans le pom.xml
.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
Il faut aussi adapter le fichier AppTest.java
pour JUnit4.
Pour cela, il indiquer à Maven d'ajouter un fichier Manifest
dans le jar
en précisant l'attribut Main-class
.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<mainClass>fr.uvsq.poo.compte.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
À partir de là, il est possible d'exécuter l'application avec java -jar target/maven-exemple-1.0-SNAPSHOT.jar
.
Le plugin assembly
permet de générer une archive contenant l'ensemble des dépendances d'un projet.
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>${main-class}</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Le plugin source
permet de générer une archive des sources du projet.
<build>
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Le plugin javadoc
permet de générer une archive de la javadoc.
<build>
<plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0-M1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Cette extension apporte un syntaxe plus lisible pour les tests JUnit.
<!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-all -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>