Guide complet de Maven : configuration et utilisation

Structure des répertoires de Maven

L'installation de Maven se compose de plusieurs dossiers clés. Le répertoire bin contient les scripts d'exécution pour la commande mvn. Le dossier boot héberge le framework de chargement de classes plexus-classworlds. La configuration principale, notamment le fichier settings.xml, réside dans le répertoire conf. Enfin, le dossier lib inclut les bibliothèques Java nécessaires au fonctionnement de Maven.

Configuraton de Maven

Pour configurer un répertoire de dépôt local personnalisé, plusieurs étapes sont nécessaires.

Assurez-vous que la variable d'environnement MAVEN_HOME pointe vers votre installation manuelle de Maven et que le chemin vers son dossier bin est inclus dans la varible PATH.

Vérifiez le fichier settings.xml utilisateur, généralement situé dans ~/.m2 sur Windows, pour confirmer que la balise localRepository désigne le répertoire souhaité.

Validez également que le fichier settings.xml dans le dossier conf de votre installation Maven est configuré avec le même chemin de dépôt.

Pour vérifier la configuration effective, exécutez la commande suivante :

mvn help:effective-settings

Si la sortie confirme le chemin personnalisé pour localRepository, la configuration du dépôt local est réussie.

Utilisation de Maven et problèmes courants

Lors de la création d'un projet, la structure des répertoires doit correspondre à la configuration des dépendances dans le fichier pom.xml. Une incohérence dans les noms de dossiers peut entraîner des échecs lors de l'empaquetage.

La gestion des dépendances offre des mécanismes de filtrage. Par exemple, pour exclure une dépendance transitive spécifique, l'attribut exclusion peut être utilisé dans la déclaration de la dépendance.

Concepts fondamentaux de Maven

Dépôts (Repositories)

Un dépôt Maven est un emplacement de stockage pour les artefacts (JAR, WAR, POM, etc.). Il en existe trois types : local, central et distant.

Dépôt local

Le dépôt local est créé lors de la première exécution d'une commande Maven. Par défaut, il se trouve dans le répertoire ~/.m2/repository. Maven y stocke les artefacts téléchargés et les utilise pour les constructions futures. Son emplacement peut être modifié dans le fichier settings.xml.

Dépôt central

Le dépôt central est géré par la communauté Maven et héberge une vaste collection de bibliothèques Java open source. Il est accessible par réseau et ne requiert aucune configuration.

Ordre de recherche des dépendances

Maven recherche les artefacts d'abord dans le dépôt local, puis dans le dépôt central, ensuite dans les dépôts distants configurés, et enfin dans un éventuel serveur proxy (maven). Une erreur est générée si l'artefact n'est trouvé nulle part.

Cycles de vie (Lifecycle)

Les cycles de vie de Maven abstraient les phases de construction d'un projet. Maven possède trois cycles indépendants : Clean pour le nettoyage, Default pour la compilation, le test, l'empaquetage, et Site pour la génération de documentation. Chaque phase est exécutée par des plugins.

Configuration d'un dépôt privé avec Nexus

Installation de Nexus

Pour installer Nexus, extrayez l'archive dans un répertoire sans caractères spéciaux. Les propriétés de configuration se trouvnet dans nexus.properties. L'installation et la gestion du service s'effectuent via les commandes nexus.bat install, start et stop en tant qu'administrateur. L'interface web est accessible à l'adresse http://localhost:[port]/nexus avec les identifiants par défaut admin / admin123.

Types de dépôts Nexus

Nexus gère plusieurs types de dépôts : Hosted pour héberger les artefacts internes (releases et snapshots), Proxy pour faire le relais vers des dépôts publics comme le dépôt central, Group pour agréger plusieurs dépôts en une seule URL, et Virtual pour la compatibilité.

Publication d'un projet vers le dépôt privé

Pour déployer des artefacts, configurez les identifiants dans le settings.xml du client dans la section <servers>.

<server>
    <id>deployment-releases</id>
    <username>utilisateur</username>
    <password>motDePasse</password>
</server>
<server>
    <id>deployment-snapshots</id>
    <username>utilisateur</username>
    <password>motDePasse</password>
</server>

Dans le fichier pom.xml du projet, définissez les URL de déploiement dans <distributionManagement>. Les identifiants (id) doivent correspondre à ceux configurés dans settings.xml.

<distributionManagement>
    <repository>
        <id>deployment-releases</id>
        <url>http://votre-serveur/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
        <id>deployment-snapshots</id>
        <url>http://votre-serveur/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>

L'exécution de la commande mvn deploy publiera l'artefact sur le dépôt privé. Pour une configuration globale dans un projet multi-module, cette section peut être définie dans le pom.xml parent.

Téléchargement des artefacts depuis le dépôt privé

Pour configurer Maven afin qu'il récupère les artefacts via le dépôt privé, ajoutez une configuration de miroir dans le settings.xml.

<mirror>
    <id>mirror-nexus</id>
    <mirrorOf>*</mirrorOf>
    <url>http://votre-serveur/nexus/content/groups/public/</url>
</mirror>

Alternativement, vous pouvez définir un profil dans settings.xml spécifiant le dépôt et l'activer.

<profile>
    <id>profil-nexus</id>
    <repositories>
        <repository>
            <id>depot-nexus</id>
            <url>http://votre-serveur/nexus/content/groups/public/</url>
            <releases><enabled>true</enabled></releases>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
    </repositories>
</profile>
<activeProfiles>
    <activeProfile>profil-nexus</activeProfile>
</activeProfiles>

Dépôt de bibliothèques tierces

Pour installer un fichier JAR tiers dans le dépôt local, utilisez la commande :

mvn install:install-file -DgroupId=com.exemple -DartifactId=ma-lib -Dversion=1.0 -Dfile=chemin/vers/lib.jar -Dpackaging=jar

Pour le publier directement sur le dépôt privé, configurez d'abord un serveur dans settings.xml pour l'identifiant de dépôt tiers, puis exécutez :

mvn deploy:deploy-file -DgroupId=com.exemple -DartifactId=ma-lib -Dversion=1.0 -Dfile=chemin/vers/lib.jar -Dpackaging=jar -Durl=http://votre-serveur/nexus/content/repositories/tiers/ -DrepositoryId=tiers

Étiquettes: Maven nexus pom settings.xml dependency-management

Publié le 22 juin à 04h54