Faire cohabiter M2Eclipse et maven-eclipse-plugin

L’utilisation de Maven avec Eclipse peut se faire avec deux approches différentes.

La première, qui est embarquée dans maven s’appelle maven-eclipse-plugin. Ce plugin maven vous permet de générer les métadonnées Eclipse pour votre projet Maven de la façon suivante :

1
2
3
4
cd /path/to/maven/project
mvn eclipse:eclipse
# Si c'est la première utilisation du plugin, il faudra être patient
# pendant le téléchargement des dépendances maven...

Cette commande est très utile, mais peut s’avérer fastidieuse, car non intégrée à eclipse. En plus, on est obligé de réexécuter cette commande chaque fois qu’on a ajouté de nouvelles dépendances à notre POM.xml.

L’autre approche prend la forme d’un plugin pour Eclipse cette fois, nommé M2Eclipse et poussé par Sonatype (la société derrière Maven), il devrait un jour être intégré à l’update site d’Eclipse lorsqu’il sera devenu assez mur pour ça.

Pour l’installer, voici l’update site qu’il vous faudra ajouter à votre Eclipse : http://m2eclipse.sonatype.org/sites/m2e/

Lequel utiliser et pourquoi ?

Chaque plugin a ses forces et ses faiblesses. maven-eclipse-plugin permet de générer une configuration de projet fiable mais doit être invoqué dès qu’on modifie les dépendances. M2Eclipse, lui, n’est pas encore parfait mais permet d’avoir une résolution des dépendances en temps réel.

Chacun choisira donc ce qu’il préfèrera :P

Cohabitation !

Si vous souhaitez profiter des bons côtés des deux solutions, vous devrez configurer maven-eclipse-plugin pour qu’il génère les métadonnées correspondant à M2Ecplise. Voici ce qu’il faut faire :

  • Modifier votre fichier POM pour spécifier la version de maven-eclipse-plugin a utiliser (l’astuce ne marche plus pour la version courante [2.8])
1
2
3
4
5
6
7
8
9
10
11
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.7</version>
<!-- Votre configuration si besoin -->
</plugin>
</plugins>
</pluginManagement>
</build>
  • Utiliser ce goal avec maven-eclipse-plugin :
1
2
3
mvn eclipse:clean eclipse:m2eclipse
# Pour ceux qui ne le sauraient pas, eclipse:clean supprime les métadonnées
# eclipse du projet Maven

Grâce à ce goal, les métadonnées créées contiendront alors celles qui concernent M2Eclipse, vous permettant ainsi de bénéficier de la résolution des dépendances.

VN:R_U [1.9.22_1171]
Rating: +1 (from 1 vote)
Share

À propos de Romain Sertelon

Vous pouvez me suivre sur Twitter et sur Google+ et voir mes débuts sur Github
Ce contenu a été publié dans Outils, avec comme mot(s)-clef(s) , . Vous pouvez le mettre en favoris avec ce permalien.

3 réponses à Faire cohabiter M2Eclipse et maven-eclipse-plugin

  1. L’intérêt de m2eclipse réside dans le fait qu’il “vit” au sein d’eclipse et a donc accès aux modifications effectuées dans le workspace. Il est donc en mesure de détecter quels modules mettre à jour, et uniquement ceux-là. Il s’agit clairement de la cible de Sonatype et maven-eclipse-plugin est officiellement déprécié.

    Sauf que… il est encore à mon sens en WIP. Personnellement, j’ai observé sur la dernière version des trucs très bizarres, comme les classes de test qui n’étaient plus recompilées?!
    En termes d’ergonomie, j’aimais bien le fait d’avoir les dépendances dans l’ordre alphabétique plutôt que dans celui du reactor. Ca permettait de détecter plus facilement d’éventuels doublons ou incohérences, genre cglib+cglib-nodep, ou un bout de spring en 2.5 et un autre en 3.0, etc…

    Bref, en attendant, je désactive la résolution des dépendances et ne me sert de m2eclipse que pour créer des projets maven ou visualiser des pom, et continue à générer les dépendances avec maven-eclipse-plugin : lent, bourrin, mais fiable…

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)
  2. Ce plugin a un petit côté “magique”, qui des fois peut laisser pantois..

    A ne pas oublier : pensez à installer les extras, notamment l’intégration WTP (quasi obligatoire).

    Par ailleurs, même si les choses s’améliorent, l’intégration M2Eclipse + GWT est encore un peu bancale. La dernière version a l’air de ne plus le faire, mais jusqu’à présent ça avait un peu tendance à lancer des builds GWT à tout bout de champ.

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)
  3. La troisième solution est d’utiliser un IDE avec un support natif et non intrusif de Maven :) Un indice, ce n’est pas IntelliJ, qui a tendance à rajouter sa sauce sur les patates Maven, et parfois ça pose des problèmes en lançant des tests par exemple.

    Le seul problème dans Netbeans est la mauvaise indexation des fichiers non-sources, qui rend la recherche par nom de fichier assez lente si les projets ouverts en contiennent beaucoup (mais j’ai ouvert un ticket en cours d’investigation :) )

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)

Laisser un commentaire