Convertir le projet Eclipse existant en projet Maven

246

Pour un projet à l'œuvre, nous envisageons d'utiliser le plugin Maven pour Eclipse pour automatiser nos builds. À l'heure actuelle, la procédure est beaucoup plus compliquée qu'elle ne devrait l'être, et nous espérons que Maven simplifiera les choses en un seul clic.

Ma question est, existe-t-il un assistant ou un importateur automatique pour convertir un projet Java Eclipse existant en projet Maven, en utilisant le plugin Maven? Ou dois-je créer un nouveau projet Maven et copier manuellement sur tous les fichiers source, bibliothèques, etc.

Tom G
la source
3
Votre build existant utilise-t-il un script Ant?
mat
4
Vous devriez probablement changer de réponse acceptée
Mr_and_Mrs_D

Réponses:

141

Si vous souhaitez simplement créer un POM par défaut et activer les fonctionnalités de m2eclipse: je suppose donc que vous ne disposez pas actuellement d'une configuration de construction automatisée alternative que vous essayez d'importer, et je suppose que vous parlez du plugin m2eclipse.

Le plugin m2eclipse fournit une option de clic droit sur un projet pour ajouter ce pom.xml par défaut:

Versions M2E plus récentes

Faites un clic droit sur Projet -> sous-menu Configurer -> Convertir en projet Maven

Versions M2E plus anciennes

Cliquez avec le bouton droit sur Projet -> sous-menu Maven -> Activer la gestion des dépendances.

Cela fera le nécessaire pour activer le plugin pour ce projet.


Pour répondre ' existe-t-il un importateur ou un assistant automatique? ': Pas que je sache de. L'utilisation de l'option ci-dessus vous permettra d'activer le plugin m2eclipse pour votre projet existant en évitant la copie manuelle. Vous devrez toujours configurer les dépendances et autres éléments dont vous avez besoin pour vous construire.

brabster
la source
Bien qu'il active M2Eclipse, ce n'est pas vraiment un assistant, il n'importe pas un projet Eclipse existant. Au contraire, cela donne à l'utilisateur la possibilité de sélectionner des dépendances, etc., ce qui peut être difficile si l'utilisateur n'a pas beaucoup d'expérience avec Maven.
Kaleb Pederson
J'ai interprété la question comme «dois-je créer un nouveau projet et copier manuellement des éléments pour utiliser le plugin m2eclipse?», Je vais clarifier.
2010
16
L'élément de menu maven n'est pas disponible pour moi à partir du menu contextuel (dernière m2eclipse), la réponse de chengdong fonctionne.
wulfgarpro
8
Sur la version actuelle d'Eclipse (4.2) et de m2eclipse, l'élément de menu est Convertir / Convertir en projet Maven.
Jesper
12
L'élément de menu @Jesper est "Configurer / Convertir en projet Maven"
angelcervera
293

À partir de m2e 0.13.0 (si pas plus tôt que), vous pouvez convertir un projet Java en projet Maven à partir du menu contextuel. Voici comment:

  • Faites un clic droit sur le projet Java pour faire apparaître le menu contextuel
  • Sélectionnez Configurer> Convertir en projet Maven

Voici les étapes détaillées des captures d'écran.

chengdong
la source
30
Cela ne crée toujours pas les structures de répertoires et n'ajoute pas de dépendances dans pom.
Klaus Nji
2
m2e ne crée-t-il toujours pas la structure du répertoire maven et n'ajoute-t-il pas de dépendances dans pom?
Mr_and_Mrs_D
2
Ma solution (@ShriKant Vashishtha) mentionnée ci-dessous résout tous les problèmes décrits ici. Crée la structure Maven, supprime les espaces dans les noms de dossier, crée pom.xml et déplace les dossiers source dans la structure Maven
ShriKant Vashishtha
Fonctionne parfaitement et sans faille sur Windows 10 Eclipse Mars à l'époque.
Matthis Kohli
Cela fonctionne parfaitement pour moi
WitnessTruth
12

J'avais le même problème et je voulais Mavenise tout l'espace de travail Eclipse contenant environ 60 projets Eclipse. Le faire manuellement nécessitait beaucoup de temps et les options alternatives n'étaient pas viables. Pour résoudre le problème, j'ai finalement créé un projet appelé eclipse-to-maven sur github. Comme eclipse ne dispose pas de toutes les informations nécessaires sur les dépendances, elle effectue les opérations suivantes:

  • Basé sur <classpathentry/>des éléments XML dans le fichier .classpath, il crée les dépendances sur un autre projet, identifie le fichier jar de la bibliothèque et en fonction de son nom (par exemple jakarta-oro-2.0.8.jar) identifie sa version. Actuellement artifactIdet groupIdsont les mêmes que je n'ai pas pu trouver quelque chose qui pourrait me renvoyer l'ID de groupe Maven de la dépendance basée sur artifactId. Bien que ce ne soit pas une solution parfaite, il fournit un bon terrain pour accélérer la mavénisation.

  • Il déplace tous les dossiers source selon la convention Maven (comme src/main/java)

  • Comme les projets Eclipse ayant des noms avec des espaces sont difficiles à gérer dans un environnement Linux / Unix, il les renomme également avec des noms sans espaces.

  • Les fichiers pom.xml résultants contiennent les dépendances et la structure de base de pom. Vous devez ajouter manuellement les plugins Maven requis.

ShriKant Vashishtha
la source
Intéressant ! Est-il porté sur Luna? Le projet serait-il toujours un projet d'éclipse (valide .classpathet .projectfichiers)? Pourriez-vous ajouter à votre réponse comment utiliser votre plugin pour maveniser un simple projet JavaSE - et quels seraient les changements réels dans la structure des répertoires?
Mr_and_Mrs_D
Désolé mais je ne sais pas ce qu'est Luna. Ce ne sera plus un projet d'éclipse valide car la structure du répertoire du projet est modifiée. Cependant, la création de configurations d'éclipse modifiées à l'aide de Maven est facile. Ce n'est pas un plugin mais un outil. Son fonctionnement est déjà mentionné dans le LISEZMOI du projet. La structure du répertoire est convertie dans la convention Maven. Ainsi, toutes les sources vont par exemple à src / main / java.
ShriKant Vashishtha
Luna est la dernière version d'Eclipse !!
Mr_and_Mrs_D
7

Cliquez avec le bouton droit sur le nom du projet> Configurer> Convertir en projet Maven> cliquez sur Terminer. Ici, vous allez ajouter quelques dépendances à télécharger et ajouter votre fichier jar attendu.

Cela créera un fichier pom.xml généré automatiquement. Ouvrez ce fichier au format xml dans votre éditeur d'éclipse. Après avoir construit la balise ( </build>), ajoutez vos dépendances que vous pouvez copier à partir du site Web maven et ajoutez-les là. Vous êtes maintenant prêt à partir. Ces dépendances ajouteront automatiquement les fichiers jar requis.

Omar Faroque Anik
la source
1
Est-ce que cela créera la structure du dossier maven?
Mr_and_Mrs_D
oui, il créera la structure de dossiers maven basée sur le modèle d'archétype mappé approprié et la configuration minimale. Vous devez ajouter manuellement chacune de vos dépendances de projet (à partir de .classpath) dans POM.xml.
Pratap Singh
5

La réponse de Chengdong est correcte, vous devez utiliser Configure>Convert to Maven Project. Cependant, je dois ajouter que le processus de conversion a été considérablement amélioré depuis m2e 0.13.0: m2e 1.1+ et m2e-wtp 0.16.0+ peuvent désormais convertir les paramètres d'éclipse existants en configuration de plugin maven .

En ce qui concerne la conversion des dépendances, vous pouvez essayer la fonctionnalité d'intégration JBoss Tools (JBT) 4.0 Maven, qui contient un assistant de conversion expérimental, connecté au processus de conversion de m2e: http://docs.jboss.org/tools/whatsnew/maven/ maven-news-4.0.0.Beta1.html .

Il ne prétend pas être la solution ultime (rien ne le peut), mais il devrait grandement aider à amorcer votre processus de conversion Maven.

Aussi, pour info, voici quelques idées pour améliorer le processus de conversion de m2e , le refactoring pour utiliser une mise en page Maven sera très probablement implémenté à l'avenir.

JBT 4.0 (nécessite Eclipse JavaEE Juno) peut être installé depuis http://download.jboss.org/jbosstools/updates/stable/juno/ ou depuis Eclipse Marketplace

Fred Bricon
la source
4

C'est nécessaire parce que, plus ou moins, lorsque nous importons un projet depuis git, ce n'est pas un projet maven, donc les dépendances maven ne sont pas dans le chemin de construction.

Voici ce que j'ai fait pour transformer un projet général en projet Maven.

projet général -> projet java cliquez droit sur le projet, propriétés-> facettes du projet, cliquez sur "java". Cette étape transformera un projet général en projet java.

projet java -> projet maven clic droit sur le projet, configurer -> convertir en projet maven Pour le moment, les dépendances maven lib ne sont toujours pas dans le chemin de génération. propriétés du projet, chemin de construction , ajouter une bibliothèque, ajouter des dépendances maven lib

Et attendez quelques secondes, lorsque les dépendances sont chargées, le projet est prêt!

moonshang
la source
2

Il existe un programme en ligne de commande pour convertir tout projet Java en projet SBT / Maven.

Il résout tous les fichiers JAR et essaie de déterminer la version correcte en fonction de la somme de contrôle SHA, du chemin de classe ou du nom de fichier. Il essaie ensuite de compiler les sources jusqu'à ce qu'il trouve une configuration de travail. Des tâches personnalisées à exécuter par configuration de dépendance peuvent également être fournies.

UniversalResolver 1.0
Usage: UniversalResolver [options]

  -s <srcpath1>,<srcpath2>... | --srcPaths <srcpath1>,<srcpath2>...
        required src paths to include
  -j <jar1>,<jar2>... | --jars <jar1>,<jar2>...
        required jars/jar paths to include
  -t /path/To/Dir | --testDirectory /path/To/Dir
        required directory where test configurations will be stored
  -a <task1>,<task2>... | --sbt-tasks <task1>,<task2>...
        SBT Tasks to be executed. i.e. compile
  -d /path/To/dependencyFile.json | --dependencyFile /path/To/dependencyFile.json
        optional file where the dependency buffer will be stored
  -l | --search
        load and search dependencies from remote repositories
  -g | --generateConfigurations
        generate dependency configurations
  -c <value> | --findByNameCount <value>
        number of dependencies to resolve by class name per jar

https://bitbucket.org/mnyx/universalresolver

Alex
la source
Cela ressemble à une option très intéressante. Mais, comme il est actuellement conditionné, il n'est pas très accessible. On ne sait pas comment empaqueter et déployer le code source. La plupart des développeurs Java ne sont pas des développeurs Scala, ni SBT n'est un outil largement utilisé dans la communauté.
A. Rick
1

Ma question est, existe-t-il un assistant ou un importateur automatique pour convertir un projet Java Eclipse existant en projet Maven, en utilisant le plugin Maven?

Pour autant que je sache, il n'y a rien qui convertira automatiquement un projet Eclipse en projet Maven (c'est-à-dire modifier la mise en page, créer un POM, "générer" et le nourrir avec des métadonnées, détecter les bibliothèques et leurs versions pour les ajouter au POM , etc). Eclipse n'a tout simplement pas assez de métadonnées pour rendre cela possible (c'est précisément le but du POM) et / ou pour produire un résultat décent.

Ou dois-je créer un nouveau projet Maven et copier manuellement sur tous les fichiers source, bibliothèques, etc.

Ce serait la meilleure option à mon avis. Créez un projet Maven, copiez / déplacez les sources, les ressources, les tests, testez les ressources dans leurs répertoires respectifs, déclarez les dépendances, etc.

Pascal Thivent
la source
Pourquoi cette réponse est-elle supérieure à la réponse +199? Je ne l'ai presque pas vu
Evorlor
1

Pour convertir en Gradle est analogique en Maven:

Faites un clic droit sur Projet -> sous-menu Configurer -> Convertir en projet Gradle (STS)

un autre
la source
4
La réponse n'est pas pertinente à la question
Ripon Al Wasim
1
J'ai trouvé cette question en recherchant Gradle, plusieurs fois il est utile d'ajouter des réponses pour d'autres OS plutôt que l'OS demandé car il n'existe pas de question pour le cas individuel. En ce qui concerne Gradle, je ne créerais pas de nouvelle question pour répondre à ce que je considère utile, je poste plutôt ceci. Merci et salutations.
un autre