web-dev-qa-db-fra.com

Le projet Maven n'est pas traité comme Java dans Eclipse

Je travaille sur un projet comportant de nombreux projets Maven. J'ai fait beaucoup d'essais sur ces projets avec JUnit, et généralement, ça se passe bien. J'ouvre Eclipse, fais un clic droit dans le paquet Explorer-> Importer ... Projets Maven existants et je peux importer le projet correctement. Je peux construire, explorer jusqu'à src/test/Java ... Faites un clic droit sur le fichier et effectuez un test Exécuter en tant que JUnit. De temps en temps, je n'arrive pas à faire fonctionner ça. Si je clique avec le bouton droit de la souris pour faire un Run As, tout ce que je reçois est une application AspectJ/Java. Il n'y a pas de tests JUnit.

J'ai remarqué que l'icône située à côté du dossier du projet ne comporte qu'un M et une icône de dossier, alors que pour les projets qui fonctionnent, il existe un dossier, M, ET AJ. J'ai également remarqué qu'il ne semble pas que les fichiers soient classés dans leurs packages comme des projets Java normaux. Il semble que le projet ne soit pas traité comme un projet AspectJ. Comment faire en sorte qu'Eclipse reconnaisse ce projet Maven en tant que projet Java?

20
FuriousGeorge

Plusieurs des réponses existantes devraient fonctionner, mais celles qui suggèrent d'ajouter une facette Java ne fonctionneront que si votre projet a déjà une nature de facettes (ou si vous souhaitez le convertir), et celle qui suggère de changer votre pom.xml ne fonctionnera que si vous réimportez ensuite votre projet en tant que projet maven.

Si vous souhaitez "réparer" votre projet existant, c'est-à-dire ajouter une nature Java sans le convertir en formulaire à facettes, sans supprimer ni réimporter, éditez simplement votre fichier .project (en externe, ou avec la vue Navigateur dans Eclipse n'apparaîtra pas dans l'explorateur de votre package) et ajoutez le constructeur Java et la nature Java au constructeur/nature maven existant:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>yourprojectname</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <!-- add this build command -->
        <buildCommand>
            <name>org.Eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <!-- this would've already been there -->
        <buildCommand>
            <name>org.Eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <!-- add this nature -->
        <nature>org.Eclipse.jdt.core.javanature</nature>
        <!-- this would've already been there -->
        <nature>org.Eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>

Notez la capitalisation différente (javabuilder mais maven2Builder, javanature mais maven2Nature).

Dès que vous sauvegardez, il devrait se reconstruire automatiquement. Vous devrez peut-être ajouter manuellement les dossiers source (Project properties -> Java Build Path -> Source tab -> Add Folder....

33
Amos M. Carpenter

Cliquez avec le bouton droit de la souris sur Project -> Properties -> Project Facets, puis choisissez toutes les facettes qui s'appliquent à votre cas (par exemple, Java).

12
fmucar

mvn Eclipse: eclipse créera les fichiers .project nécessaires qui ajouteront la nature Java et d’autres propriétés au projet

6
V N

Je faisais face au même problème et les étapes ci-dessous l'ont résolu:

1- Ouvrez le fichier pom.xml du projet problématique. 

2 -Dans l'onglet Aperçu, vérifiez les paramètres Artefact/Conditionnement. 

3- S'il est réglé sur "pom", changez le en "jar". 

4- Enregistrez vos modifications, puis supprimez le projet d’Eclipse uniquement et réimportez-le.

J'espère que cela pourra aider!

4
Rami

Cela dépend de la facette du projet Eclipse properties (si vous utilisez Java EE), je vous suggère de cliquer avec le bouton droit sur les propriétés du projet et de voir quelle facette est définie pour votre projet.

4
RoiG

J'ai rencontré le même problème (après l'importation de pom.xml dans Eclipse, le projet n'est pas traité en tant que Java et il n'y a que "constructeur de projet maven" dans la propriété des constructeurs de projet, mais pas de "constructeur Java") dans Eclipse luna.

La réimportation du projet maven après la suppression du dossier ".settings" et du fichier ".project" ne fonctionnait pas . La réimportation après un changement d’espace de travail a fonctionné pour moi.

3
charles_chung

J'ai parlé à un collègue et j'ai pu «régler» le problème. J'ai supprimé Eclipse (pas du disque) et j'ai immédiatement refait l'importation Maven et maintenant, cela fonctionne comme par magie.

Il semble que s'il y avait une erreur avec pom.xml, en particulier si la version parente était fausse, le projet maven n'était pas importé/créé correctement. Une fois les problèmes résolus dans le POM, le projet se déroulerait sans problème, mais ce n'était toujours qu'un projet Maven. Une fois que je l'ai retiré et réimporté, il l'a traité comme un projet Maven/AspectJ.

1
FuriousGeorge

Consultez le fichier pom.xml pour les projets qui ne prennent pas la nature AspectJ (AJ sur le projet). Manquent-ils le plugin AspectJ-Maven? Ils devraient avoir une section comme:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>aspectj-maven-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <!-- use this goal to weave all your main classes -->
          <goal>compile</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <complianceLevel>1.6</complianceLevel>
    </configuration>
</plugin>

Regardez aussi sa question: Projet Maven/AJDT dans Eclipse

1
Richard Neish

Mes cinq centimes ...... Dans mon cas, je «perdais» toujours la nature «Java» du projet, car le fichier pom était réglé sur «package as ear». Il n'y avait aucune erreur ou message d'avertissement, ce qui serait bien d'avoir. Dès que j'ai changé le paquet en 'jar', j'ai pu définir la nature du projet en Java et il est conservé.

0
daniel sp

J'ai également essayé toutes les approches décrites dans ce fil. Modifier uniquement .project ne suffit pas, car les bibliothèques Maven ne seront pas utilisées pour la construction du projet et la construction du projet échouera. mvn Eclipse: eclipse créera un .classpath long et inutile sans utiliser réellement M2E. 

Le moyen le plus simple consiste à créer un nouveau projet Java, à le convertir en projet Maven et à ouvrir les fichiers .project et .classpath pour ce nouveau projet. Effectuez ensuite des modifications similaires pour le projet Maven importé. 

Les changements importants apportés au fichier .project ont été décrits, mais pour utiliser les dépendances Maven dans Eclipse, il convient de procéder de la sorte

<classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER/org.Eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.Eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>

L'utilisation de facettes n'est pas une option dans ce cas car avec les facettes, Eclipse n'utilise pas m2e et les dépendances maven. Là encore, les dépendances avec des facettes doivent être gérées manuellement. 

J'ai essayé tout cela avec Eclipse 4.6.2 Neon.

0
Xaltotun