web-dev-qa-db-fra.com

Maven n'ajoute pas de chemin de classe au projet Eclipse

J'ai un projet maven, que je travaille sur Eclipse.

J'utilise maven Eclipse: eclipse pour générer le chemin de classe, mais ... il n'ajoute JAMAIS le chemin de classe sur le projet Eclipse. J'ai essayé le plugin maven-Eclipse, j'ai essayé le plugin M2Eclipse, mais peu importe ce que je fais, je ne peux pas obtenir les entrées classpath pour commencer à travailler. J'ai de nombreuses erreurs de construction, même si le maven construit parfaitement l'oreille.

Des directives?

Merci pour toute réponse!

MISE À JOUR: Voici mon chemin de classe racine:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="core/src/main/Java"/>
    <classpathentry excluding="**" kind="src" output="target/classes" path="core/src/main/resources"/>
    <classpathentry kind="src" path="client/src/main/Java"/>
    <classpathentry kind="src" path="client/src/main/resources"/>
    <classpathentry kind="src" path="junit_server/src/main/Java"/>
    <classpathentry kind="src" path="initializer/src/main/Java"/>
    <classpathentry kind="src" path="initializer/src/main/webapp"/>
    <classpathentry kind="src" path="site/src/main/webapp"/>
    <classpathentry kind="src" path="core/src/test/Java"/>
    <classpathentry kind="src" path="core/src/test/resources"/>
    <classpathentry exported="true" kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry exported="true" kind="var" path="M2_REPO"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

UPDATE2: Voici mon .project:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>coreisp_back</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.Eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.Eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.Eclipse.m2e.core.maven2Nature</nature>
        <nature>org.Eclipse.jdt.core.javanature</nature>
    </natures>
</projectDescription>
28
Andre Cardoso

La configuration générée par le plugin Maven Eclipse n'est pas compatible avec m2e/m2Eclipse. Si vous souhaitez utiliser Maven et Eclipse ensemble, le mieux est de supprimer toute modification de votre configuration générée par le plugin maven Eclipse et d'utiliser m2e pour importer votre projet Maven.

16
Nicola Musatti
7

Vous devez ajouter les dossiers source supplémentaires au pom.xml avec le plugin build-helper-maven. Ensuite, exécutez

mvn Eclipse: nettoyer Eclipse: éclipse

Par exemple, ce pom.xml ..

<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>mygroup</groupId>
    <artifactId>artifact</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>artifact</name>
    <url>http://maven.Apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.7</version>
                <executions>
                    <execution>
                        <id>add-source</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>client/src/main/Java</source>
                            </sources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>add-resource</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>add-resource</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>client/src/main/resources</directory>
                                    <targetPath>resources</targetPath>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Génère ce .classpath

<classpath>
  <classpathentry kind="src" path="src/test/Java" output="target/test-classes" including="**/*.Java"/>
  <classpathentry kind="src" path="src/main/Java" including="**/*.Java"/>
  <classpathentry kind="src" path="client/src/main/Java" including="**/*.Java"/>
  <classpathentry kind="src" path="client/src/main/resources" excluding="**/*.Java"/>
  <classpathentry kind="output" path="target/classes"/>
  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
  <classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>

Assurez-vous que les dossiers existent, si le chemin est incorrect, ils ne seront pas ajoutés. Recherchez cela dans le journal Maven.

[INFO] ignorer les ressources non existantesDirectory/tmp/artifact/src/main/resources

Mon équipe a trouvé les plugins Eclipse maven instables, optant pour créer notre configuration Eclipse entière via maven.

6
Stephen

un problème que je rencontre est après la conversion d'un projet en maven, j'ai besoin d'effacer la configuration d'exécution car la conversion ne met pas à jour le chemin de classe pour configurer les chemins de classe dépendants de maven . Eclipse Run Configuration classpath should show maven dependencies

1
james_t

Par défaut, les installations mvn ne sont pas importées automatiquement dans Eclipse. Ainsi, après avoir exécuté mvn install à partir de l'invite de commandes. Exécutez la commande suivante:

mvn Eclipse: éclipse

Cela importera tous les fichiers JAR dans votre projet Eclipse et mettra également à jour le chemin de classe.

Vous devez exécuter la commande ci-dessus la toute première fois que vous ajoutez une nouvelle dépendance à votre POM et effectuez une compilation ou une installation mvn.

1
Gagan M

Cela s'appuie sur m2Eclipse. Lorsque vous faites cela, toutes vos dépendances sont gérées par maven/m2Eclipse, donc votre .classpath devient très minimal.

En termes d'architecture de projet, vous voulez un projet Eclipse par maven pom. Chaque projet .classpath contient uniquement les sources, JRE et injection maven:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/Java"/>
    <classpathentry kind="src" output="target/test-classes" path="src/test/Java"/>
    <classpathentry kind="con" path="org.maven.ide.Eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="con" path="org.Eclipse.jst.j2ee.internal.module.container"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

(ajustez en fonction de vos sources).

Je soupçonne que vos nombreuses erreurs proviennent d'entrées en double dans les dépendances car vous les injectez à la fois manuellement (entrées .classpath supplémentaires) et via maven.

Vous voudrez également vérifier que la résolution de l'espace de travail local dans m2Eclipse est activée (devrait être activée par défaut).

1
ptyx

En plus de la réponse la plus votée, vous pouvez toujours vous retrouver avec un projet cassé, pas de "dépendances Maven" (Kepler) et pas de résolution de chemin de classe.

Dans mon cas, mon settings.xml du référentiel maven local a été supprimé lorsqu'un sdk tiers s'est mis à jour, après un redémarrage, Eclipse a semblé effacer la référence à ce fichier settings.xml.

Une fois que j'ai remis le fichier et que j'y ai fait référence dans Maven> Installations> Paramètres globaux: /home/andy/.m2/settings.xml, le nettoyage de chaque projet a démarré toute la résolution de chemin de classe nécessaire. simplement en train de partager.

Pour moi, les fichiers résultants ressemblaient à:

. classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/Java"/>
    <classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER/org.Eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="con" path="org.Eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

. projet

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>jemh-ao</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.Eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.Eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.Eclipse.jdt.core.javanature</nature>
        <nature>org.Eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>
1
Javahollic