Maven - 0xC70FF3/0xC70FF3.github.io GitHub Wiki

Installation

Sous ubuntu

apt-get install maven2

Sous Netbeans

Sur les dernières distributions de Netbeans, maven est directement supporté, cependant il faut l'activer : Pour cela, allez dans "Tools -> plugins", puis sur l'onglet "installed", activez l'element "Java Web and EE".

Configuration

Proxy/Cache

Par défaut, le fichier de configuration de maven se trouve dans /home/username/.m2/settings.xml :

<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" 
 xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    ....
    <mirrors>
        <mirror>
            <mirrorOf>*</mirrorOf>
            <name>Public Repositories</name>
            <url>http://{NEXUS SERVER URL}:8080/nexus-2.0/content/groups/public</url>
            <id>public</id>
        </mirror>
    </mirrors>
    ....
</settings>

Voila, maintenant tous vos téléchargements maven devraient se faire depuis le repository sélectionné.

Artifacts

Il est possible de disposer de différents artifacts (templates de projet) en fonction du type de logiciel. Il ne reste ensuite plus qu'a les configurer (pom.xml) en y ajoutant les dépendances souhaitées et commencer à coder :) .

### Artifact Swing Pour créer un projet de base, vous pouvez utiliser la commande :

mvn archetype:generate -DarchetypeGroupId=com.yourCompany.artifacts -DarchetypeArtifactId=yourCompany-swing-artifact -DarchetypeVersion=0.1 -DgroupId=com.yourCompany.yourApp -DartifactId=yourApp

Ou bien directement sous Netbeans en créant un project maven et en ajoutant un artifact avec les propriétés :

 groupId : com.yourCompany.artifacts
 artifactId : yourCompany-swing-artifact
 version : 0.1

Artifact de librairie

Pour créer un projet de base, vous pouvez utiliser la commande :

mvn archetype:generate -DarchetypeGroupId=com.yourCompany.artifacts -DarchetypeArtifactId=yourCompany-lib-artifact -DarchetypeVersion=0.1 -DgroupId=com.yourCompany.yourLib -DartifactId=yourLib

Ou bien directement sous Netbeans en créant un project maven et en ajoutent un artifact avec les propriétés :

 groupId : com.yourCompany.artifacts
 artifactId : yourCompany-lib-artifact
 version : 0.1

Principes/Utilisation

### Arborescence par défaut d'un projet L'arboresence d'un projet maven est clairement défini. le répertoire src contient l'ensemble des sources.

+-->/
+---->pom.xml          # fichier de définition du projet
+---->src/         
+------>main/          # sources de l'application
+-------->java/        # les source java
+-------->resources/   # les ressources de l'application
+-------->webroot/     # Racine web des applications webapp (optionnel)
+------>test/          # sources des test
+-------->java/        # sources java des tests
+-------->resources/   # les ressources des tests

Les répertoires java et les ressources sont regroupés à la construction du jar par la suite.

Numero de version

Les numéros de version respectent la convention suivante :

X.x

ou : X : Numero de version majeur : correspond à une évolution majeure du soft. x : Numero de version mineur : evolution normale du soft.

Par exemple : La correction d'un bug ou l'ajout d'une nouvelle fonctionnalité à un soft n'incrémenterait que la version mineur (passant par exemple de 1.1 a 1.2 ou de 1.10 à 1.11).

Une incrémentation de niveau majeur s'accompagne généralement soit :

  • d'un changement d'orientation du soft (Finalité modifiée)
  • d'une grosse refonte du coeur de l'application
  • changement de technologie
  • Ajout d'un fonctionnalité qui révolutionne l'utilisation du soft Cette liste n'est pas exhaustive, de nombreux cas peuvent amener à l'utilisation d'un numero de version majeure.

### Cycle de vie du processus de build Maven définit par défaut un certain nombre de phases utilisées dans un build. La plupart ne s'appellent jamais en ligne de commande mais seront impliciement appellés par d'autres. Nous préférons mettre l'ensemble de la configuration dans le fichier de configuration du projet ( pom.xml) plutot que de passer les arguments spécifiques sur la ligne de commande.

#### Nettoyer

mvn clean

#### Compiler et packager son application

mvn package

Pour une application swing-artifact, cette commande permet de créer deux fichiers dans le répertoire target/ nommés ${artifactId}.jar (pour un jar ne contenant que les sources du projet sans les dépendances) et ${artifactId}-jar-with-dependencies.jar (un jar contenant les sources et l'ensemble des dépendances).

Dans le cas d'une librairie, cette commande créé un seul fichier dans le répertoire target/ nommés ${artifactId}.jar.

Tester l'application

mvn test

Executer l'application (Swing artifact)

mvn package exec:exec

Builder pour la livraison

Cette commande sert a desactiver le profil de build de développement et a utiliser celui de build.

mvn clean package -P build,-dev

Release sur le repository

d'une librairie externe

Nexus permet de déployer des jars automatiquement. Cependant il faut aussi y mettre ses dépendances, sinon il ne sera pas utilisable. Il faut uploader l'artifact sur le repository : thirdparty

d'une librairie maison

Il faut uploader l'artifact sur le repository : releases

Il est possible de mettre à disposition automatiquement les librairies sur le repo maven à l'aide de la commande :

mvn clean deploy -P build,-dev

Pour ce faire, il faut mettre dans le pom.xml de votre projet :

<distributionManagement>
    <repository>
        <id>releases</id>
        <name>Releases Repository</name>
        <url>http://{NEXUS SERVER URL}:8080/nexus-2.0/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <name>Snapshot Repository</name>
        <url>http://{NEXUS SERVER URL}:8080/nexus-2.0/content/repositories/snapshots</url>
    </snapshotRepository>
</distributionManagement>

En suite, il faut remplir le fichier de configuration de maven /home/username/.m2/settings.xml avec les identifiants qui vont bien :

<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"
 xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    ....
    <servers>
        <server>
            <id>releases</id>
            <username>deployment</username>
            <password>deployment</password>
        </server>
        <server>
            <id>snapshots</id>
            <username>deployment</username>
            <password>deployment</password>
        </server>     
    </servers>
    ...
</settings>
⚠️ **GitHub.com Fallback** ⚠️