webentwicklung-frage-antwort-db.com.de

Maven fügt dem Eclipse-Projekt keinen Klassenpfad hinzu

Ich habe ein Maven-Projekt, an dem ich an Eclipse arbeite.

Ich benutze maven Eclipse: Eclipse, um den Klassenpfad zu generieren, aber ... es wird NIEMALS der Klassenpfad zum Eclipse-Projekt hinzugefügt. Ich habe das maven-Eclipse-Plugin ausprobiert, ich habe das M2Eclipse-Plugin ausprobiert, aber es spielt keine Rolle, was ich tue, ich kann die Klassenpfadeinträge nicht zum Laufen bringen. Ich habe viele Baufehler, obwohl ich dachte, dass der Maven das Ohr perfekt baut.

Irgendwelche Richtlinien?

Danke für jede Antwort!

UPDATE: Hier ist mein Wurzelklassenpfad:

<?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: Das ist mein .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

Das vom Maven Eclipse-Plugin generierte Setup ist nicht mit m2e/m2Eclipse kompatibel. Wenn Sie Maven und Eclipse zusammen verwenden möchten, entfernen Sie am besten alle Änderungen an Ihrem Setup, die vom Eclipse-Plugin von Maven generiert wurden, und importieren Sie Ihr Maven-Projekt mit m2e.

16
Nicola Musatti

Sie müssen die zusätzlichen Quellordner mit dem Build-Helper-Maven-Plugin zur pom.xml hinzufügen. Dann renne

mVN Eclipse: Clean Eclipse: Eclipse

Zum Beispiel diese 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>

Erzeugt diesen .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>

Stellen Sie sicher, dass die Ordner vorhanden sind. Wenn der Pfad falsch ist, werden sie nicht hinzugefügt. Suchen Sie im Maven-Log danach.

[INFO] Nicht existierendes resourceDirectory/tmp/artifact/src/main/resources überspringen

Mein Team stellte fest, dass die Eclipse-Maven-Plugins instabil sind, und entschied sich dafür, unsere gesamte Eclipse-Konfiguration über Maven zu erstellen.

6
Stephen

ein Problem, auf das ich stoße, besteht darin, dass ich nach der Konvertierung eines Projekts in einen Maven die Option "Konfiguration ausführen" deaktivieren muss, da der Klassenpfad durch die Konvertierung nicht aktualisiert wird, um Klassenpfade in Abhängigkeit von Maven zu konfigurieren. Eclipse Run Configuration classpath should show maven dependencies

1
james_t

Standardmäßig werden die MVN-Installationen nicht automatisch in Eclipse importiert. Also, nachdem Sie mvn install über den Befehl Prompt ausgeführt haben. Führen Sie den folgenden Befehl aus:

mVN Eclipse: Eclipse

Dadurch werden alle Gläser in Ihr Eclipse-Projekt importiert und auch der Klassenpfad aktualisiert.

Sie müssen den obigen Befehl ausführen, wenn Sie zum ersten Mal eine neue Abhängigkeit zu Ihrem POM hinzufügen und eine MVN-Kompilierung oder -Installation durchführen.

1
Gagan M

Dies basiert auf m2Eclipse. Wenn Sie dies tun, werden alle Ihre Abhängigkeiten von maven/m2Eclipse verarbeitet, sodass Ihr .classpath sehr minimal wird.

In Bezug auf die Projektarchitektur möchten Sie ein Eclipse-Projekt pro Maven Pom. Jeder Projektklassenpfad enthält nur die Quellen, JRE und Maven Injection:

<?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>

(Passen Sie an, wo sich Ihre Quellen befinden.).

Ich vermute, dass Ihre vielen Fehler von doppelten Einträgen in den Abhängigkeiten herrühren, da Sie sie sowohl manuell (zusätzliche .classpath-Einträge) als auch über maven einfügen.

Sie sollten auch überprüfen, ob die lokale Arbeitsbereichsauflösung in m2Eclipse aktiviert ist (sollte standardmäßig aktiviert sein).

1
ptyx

Zusätzlich zu der am häufigsten gewählten Antwort können Sie immer noch ein defektes Projekt, keine 'Maven-Abhängigkeiten' (Kepler) und keine Klassenpfadauflösung haben.

In meinem Fall wurde mein lokales Maven-Repository settings.xml gelöscht, als sich ein Drittanbieter-SDK selbst aktualisierte. Nach einem Neustart schien Eclipse den Verweis auf diese settings.xml-Datei zu löschen.

Nachdem ich die Datei zurückgesetzt und in Maven> Installationen> Globale Einstellungen darauf verwiesen habe: /home/andy/.m2/settings.xml, hat das Bereinigen jedes Projekts die gesamte erforderliche Klassenpfadauflösung ausgelöst. nur teilen.

Für mich sahen die resultierenden Dateien so aus:

. Klassenpfad

<?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>

. project

<?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