webentwicklung-frage-antwort-db.com.de

Fehler beim Öffnen der Maven POM-Datei-Abhängigkeitshierarchie in Eclipse - "Projekt-Lesefehler"

Wenn ich eine POM-Datei öffne und unten auf die Registerkarte "Abhängigkeitshierarchie" klicke, wird der Fehler "Projektlesefehler" angezeigt. Es funktioniert mit anderen Projekten im selben Arbeitsbereich, nur nicht mit diesem. Irgendwelche Ideen?

enter image description here

EDIT

Als Antwort auf @ Yhns Antwort.

  1. Das Ausführen der Kompilierungs- und Paketphasen außerhalb von Eclipse über die Befehlszeile funktioniert wie erwartet. Es kompiliert die Anwendung und erstellt die endgültige WAR-Datei.
  2. Eclipse verweist in der Tat auf den Standardspeicherort der Maven settings.xml-Datei, daher sollte es die darin definierten benutzerdefinierten Repositorys berücksichtigen (mein Unternehmen verfügt über ein eigenes Maven-Repository).
  3. Ich kann die POM-Datei in Eclipse öffnen und bearbeiten, daher muss sie über Lese-/Schreibberechtigungen für die Datei verfügen.
  4. Das Projekt ist in Eclipse nicht als Maven-Projekt konfiguriert, daher kann ich die Paketphase nicht über Eclipse ausführen (ich kann es nur über die Befehlszeile ausführen).

Ich frage mich, ob es irgendetwas damit zu tun hat, dass ich Probleme beim Erstellen des Projekts mit Maven 3 hatte, da anscheinend einige der transitiven Abhängigkeiten für Maven 1 konfiguriert sind, was Maven 3 nicht unterstützt (das ist meine Theorie) trotzdem, basierend auf einigen fehlermeldungen). Ich kann das Projekt mit Maven 2 erstellen, erhalte jedoch weiterhin Meldungen wie die folgenden:

Downloading: http://dist.codehaus.org/mule/dependencies/maven2/org/codehaus/xfie/bcprov-jdk14/133/bcprov-jdk14-133.pom
[INFO] Unable to find resource 'org.codehaus.xfire:bcprov-jdk14:pom:133' in repsitory mule (http://dist.codehaus.org/mule/dependencies/maven2)

Es muss jedoch in der Lage sein, diese Abhängigkeiten zu finden, da es die JARs einwandfrei heruntergeladen hat und die Anwendung erstellen kann. Es scheint, dass das Problem darin besteht, dass den Abhängigkeiten keine POM-Dateien zugeordnet sind, weshalb sie möglicherweise nicht mit Maven 3 verwendet werden können. Dies könnte auch der Grund sein, warum ich die Abhängigkeitshierarchie in Eclipse nicht anzeigen kann.

EDIT 2

Ich habe das Projekt in ein Maven-Projekt konvertiert, indem ich zu "Konfigurieren> In Maven-Projekt konvertieren" gegangen bin. Wenn ich die POM-Datei öffne, wird der Fehler angezeigt:

ArtifactDescriptorException: Failed to read artifact descriptor for woodstox:wst (Click for 140 more)

(woodstox: wst ist eine weitere transitive Abhängigkeit des Projekts). In der Ansicht "Marker" wird ein Fehler für scheinbar jede Abhängigkeit und transitiven Abhängigkeit in meinem Projekt angezeigt. Ich kann das Projekt jedoch erfolgreich erstellen, indem ich einen "Ausführen als> Maven-Build" durchführe. ( Edit: Dies kann daran liegen, dass dieses Projekt keinen Java-Quellcode hat, aber die JARs der Abhängigkeiten in der endgültigen WAR korrekt angezeigt werden.) Die Abhängigkeitshierarchie gibt weiterhin den gleichen Fehler aus - "Projektlesefehler" .

Informationen zu den Meldungen "Ressource kann nicht gefunden werden" - dies wird jedoch nur für eine Handvoll transitiver Abhängigkeiten angezeigt. Das Projekt hat viel mehr transitive Abhängigkeiten, aber diese Meldungen werden für sie nicht angezeigt. Da die Abhängigkeiten keine POM-Dateien enthalten, scheint es so, als würde Maven versuchen, sie jedes Mal zu suchen, wenn das Projekt erstellt wird. Ist das normal keine POMs zu haben ??

Wie kann ich einen Repo-Manager finden? Muss dies auf dem Maven-Repository des Unternehmens installiert werden oder können Sie es auf Ihrer eigenen Workstation installieren?

19
Michael

Ich hatte dieses Problem mit einigen Nicht-Maven-Gläsern, die ich in mein Maven-Projekt aufnehmen musste. Ich füge die Gläser mit diesem Maven-Befehl in mein lokales Repository ein: 

mvn install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2

Dann habe ich sie in meiner pom.xml als Abhängigkeiten bezeichnet:

    <dependency>
        <groupId>gov.nist</groupId>
        <artifactId>xccdf</artifactId>
        <version>1.2</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>

Dies funktionierte eine Zeit lang gut, aber ich habe etwas in Eclipse aktualisiert und ich habe den Fehler, den Sie beschreiben, gefunden.

Das Update besteht darin, sie aus dem lokalen Repository zu entfernen und die Installationsdatei erneut auszuführen, in der maven aufgefordert wird, ein Pom für Sie zu generieren:

mvn -DgeneratePom=true install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2

Der Befehl bewirkt, dass ein Pom in demselben Verzeichnis (in Ihrem lokalen Repo) erstellt wird, in dem sich die Jar-Datei befindet.

In den letzten Versionen der Eclipse-Maven-Unterstützung wird der Maven-Build noch mit Maven 2 durchgeführt (wenn Sie mit der rechten Maustaste auf Ihre pom.xml klicken, wählen Sie z. B. "Ausführen als Mvn-Paket"). Die Abhängigkeitsanalyse wird jetzt mit einem eingebetteten Maven-3-Plugin durchgeführt, das eine Abhängigkeit ohne pom.xml nicht mag.

8
Glenn

Ich hatte das gleiche Problem. Wenn Sie aus Ihrem Projekt ein Maven-Projekt gemacht haben, sollten Sie Folgendes ausführen:

  • Klicken Sie mit der rechten Maustaste auf das Projekt | Maven | Abhängigkeiten aktualisieren oder 
  • Klicken Sie mit der rechten Maustaste auf das Projekt | Maven | Aktualisieren Sie die Projektkonfiguration

Das hat bei mir funktioniert.

5
OblongZebra

Die Informationen durch die Kommentare gegeben:

mvn compile/mvn package funktioniert über die Konsole (ich gehe davon aus, dass es sich außerhalb von Eclipse befindet). Basierend darauf sollte die POM-Datei korrekt sein und Abhängigkeiten können aufgelöst werden.

Jedoch; Es kann sein, dass die Einstellungen von Eclipse nicht korrekt sind. Wenn zum Beispiel Eclipse eigene Maven-Eigenschaften hat (anstelle der Standarddatei ~/.m2/settings.xml); Ich kann mir vorstellen, dass das Auflösen von Abhängigkeiten, die in der von maven selbst verwendeten settings.xml konfiguriert sind, fehlschlägt. Die Einstellungen dafür sollten in den Eclipse-Voreinstellungen @ Maven> Benutzereinstellungen erfolgen.

Stellen Sie außerdem sicher, dass Eclipse die Datei tatsächlich lesen kann (nicht gesperrt, richtige Rechte usw.).

Sollte dies richtig erscheinen? Kannst du versuchen, das MVN-Ziel von Eclipse zu kompilieren? Sie können dies tun, indem Sie mit der rechten Maustaste auf das Projekt klicken und run as > maven package auswählen. Auf diese Weise sollte maven mit den gleichen Einstellungen wie Eclipse ausgeführt werden und möglicherweise zusätzliche Fehler in der Konfiguration anzeigen.

--In Antwort auf zusätzliche Informationen:

Im Grunde sagt es Ihnen, wenn Sie Maven 2 verwenden, dass es keine Abhängigkeitsressource (in diesem Fall bcprov-jdk14) im angegebenen Repository (codehaus/mule) finden kann. Wenn ich das Maven-Modul (bcprov-jdk14) durchsuche, finde ich es im zentralen Repo von Maven (über unseren lokalen Nexus) @ repo1.maven.org/maven2 . Vielleicht verursacht das den Fehler, den Sie mit Maven2 bekommen?

Und wie der Maven 3-Doc sagt: für Maven 1.x Repos; Sie sollten sie durch einen Repo-Manager vertreten, der Ihnen als Maven-2-Repository dienen kann (ich glaube, wir tun das auch hier für einige Repos über Sonatype Nexus OSS)

ps .: Das Aktivieren der Verwaltung von Maven-Abhängigkeiten in Eclipse sollte ausreichen, um Maven-Laufziele verwenden zu können. Wenn Sie es testen möchten.

-

Das klingt, als könnte es mehrere Probleme geben ... da der normale Maven-Build gut funktioniert, könnte man meinen, dass Maven zumindest die Artefakte, von denen er abhängig ist, und deren Abhängigkeiten bekommen kann ... Eclipse scheint es jedoch nicht zu können .

Überprüfen Sie noch einmal, ob Ihre Eclipse-Internetverbindungseinstellungen korrekt sind. Da Sie von einem Unternehmens-Repo gesprochen haben, gehe ich davon aus, dass es wahrscheinlich auch einen Proxy geben wird (ich musste mein Eclipse einrichten, um auch dieses zu verwenden; allerdings für Plugins (siehe nächster Punkt)).

Eine andere Möglichkeit kann erfahrungsgemäß ein regelbasierter Proxy-Block für * .pom-URL-Anforderungen sein (unser Proxy hier blockiert das, um die Verwendung des lokalen Repo-Managers zu erzwingen, wie böse und ärgerlich das ist :() und öffnen Sie die .pom-Datei, die versucht wird, manuell in Ihrem Browser herunterzuladen, um zu sehen, ob dies der Fall ist (ich kann es zum Beispiel nicht ...).

Um das Repo einzurichten, müssen Sie wahrscheinlich den für das Repository Verantwortlichen bitten, es als maven2-Proxy hinzuzufügen.

Zumindest scheint es, als habe Eclipse Probleme damit, die Abhängigkeitspoms (die zum Aufbau des Abhängigkeitsbaums benötigt werden) aus dem Internet zu beziehen. Sie könnten immer versuchen, einige ICT -Teams (sofern sie dazu in der Lage sind ...) in Ihrer Firma danach zu fragen, vielleicht haben sie einige nützliche Hinweise.

2
Yhn
<properties>
    <!-- ********************** -->

    <!-- Plugin's properties -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <Java.version>1.7</Java.version>
</properties>

diese Pom-Einstellung hat für mich funktioniert

1
traysine zheng

Ich hatte das gleiche Problem, als ich pom.xml ohne Netzwerkverbindung eine neue Abhängigkeit hinzufügte. Danach hatte ich so viele Probleme wie "Missing Artefakte", "Missing Descriptor" oder "Project Read Error". Ich habe das gelöst

  1. löschen Sie die gerade hinzugefügte schlechte Abhängigkeit aus dem lokalen Repository.
  2. lokalen Index neu aufbauen.
  3. fügen Sie die Abhängigkeit erneut hinzu
1
jason zhang

Normalerweise geschieht dies, wenn sich im Pom ein Tippfehler befindet, den Maven nicht verstehen kann, und dann Project read error ausgelöst wird. Wie in meinem Fall habe ich ein Maven-Abhängigkeits-Snippet kopiert und die Version übergeben. Anstatt die aktuelle Version # einzugeben, erhielt sie dynamisch ${asciidoctorj.version} und mein Pom hatte dies nicht im Eigenschaftenbereich. Also habe ich diesen Fehler bekommen. Nachdem ich das entfernt und eine Versionsnummer eingegeben hatte, fing es an zu arbeiten. 

0
Mike

Ich habe heute dieselbe Situation gehabt. In meinem Fall ist es im falschen Fall auf den Namen der Abhängigkeit zurückzuführen. Z.B. 

Projekt A -> Projekt B -> Projekt C.__Im Projekt B der pm-Datei habe ich den Namen der Abhängigkeitsartefakte fälschlicherweise mit "c" anstelle von "C" angegeben. 

Wie in Mac OS ist das Dateisystem von der Groß- und Kleinschreibung unabhängig. Ich kann es also in die Kommandozeile einbauen, ohne diesen Fehler zu entdecken. 

In Eclipse bricht es ab, aber es wird eine sehr schlechte Fehlermeldung angezeigt. In der Fehlerliste steht "Abhängigkeitsproblem", aber der Name der Abhängigkeit ist leer. Es kann auch nicht identifiziert werden, welche Zeile im POM das Problem verursacht.

Wenn Sie versuchen, "Effektives POM" im POM-Viewer zu öffnen, wird der Projektlesefehler angezeigt. Im Popup-Fehlerdialogfeld wird Folgendes angezeigt:

Could not read maven project
Java.nio.channels.OverlappingFileLockException 

Alle Nachrichten sind nutzlos und irreführend. 

Ich entdeckte dieses Problem schließlich, indem ich mich nach vergeudeten Stunden bei Jenkins CI einreichte.

0
Jianwu Chen

Dies hatte ich nach dem Kopieren eines lokalen Repository-Ordners von einem anderen Computer. Die Lösung bestand darin, in den Repository-Ordner zu gehen, den ich kopiert hatte, und __._ remote.repositories zusammen mit den 'LastUpdated' -Dateien zu löschen. Anschließend die Maven-Abhängigkeiten in Eclipse (Alt + F5) zu aktualisieren.

0
reid