Das POM für ungültig ist, sind transitive Abhängigkeiten (falls vorhanden) nicht verfügbar
Lesezeit: 7 Minuten
Areus Astarte
Diese Frage ist veraltet und nicht mehr relevant. Ich bin seitdem für meinen Projektaufbau zu Gradle gewechselt und kann nicht mehr überprüfen, ob Antworten funktionieren oder nicht funktionieren.
Ich bin auf ein paar Probleme mit Maven gestoßen. Lassen Sie mich zunächst mein Projekt-Setup beschreiben:
Framework
| -- Apache Commons Math 3.0
| -- Bouncy Castle 1.5
| -- etc.. (lots more)
|________
| Client
| | -- GUI libraries
| | -- etc.
|
|________
Server
| -- Server Libraries
| -- etc.
Im Wesentlichen habe ich also ein Framework, das die meisten Abhängigkeiten enthält, und dann zwei Projekte, “Server” und “Client”, die ihre eigenen enthalten, ABER auch das Framework als Abhängigkeit (ein Modul von Framework.). Ich habe das Framework-Projekt in meinem lokalen Repository installiert und meine beiden Projekte können den Framework-nativen Code (auch bekannt als meine eigene Logik) sehen. Sie scheinen jedoch keine der Abhängigkeiten des Framework-Projekts verwenden zu können. Beim Versuch, eines der “untergeordneten” Projekte zu erstellen, bekomme ich Folgendes:
Invalid POM for de.r2soft.empires.framework:Framework:jar:Alpha-1.2,
transitive dependencies (if any) will not be available,
enable debug logging for more details
Ich habe versucht, den Grund dafür (oder besser noch eine Lösung) zu finden, aber nichts gefunden, was meine Probleme behoben hat. Hoffe hier kann jemand helfen. Meine Maven-Version scheint 3.2.1 zu sein (das sagt mir -version sowieso)
Hier sind meine framework-pom.xml und die client-pom.xml auf Pastebin:
So weit ich mich erinnere Ungültiges POM für de.r2soft.empires.framework:Framework:jar:Alpha-1.2, transitive Abhängigkeiten (falls vorhanden) sind nicht verfügbar, aktivieren Sie die Debug-Protokollierung für weitere Details ist eine WARN-Nachricht. Versuchen Sie also, den Vorschlägen zu folgen, und führen Sie die Maven-Phase im Debug-Modus aus, um relevante Informationen zu erhalten. Dies kann mit erfolgen -X Möglichkeit.
– tmarwen
10. Mai 2014 um 14:00 Uhr
Nun … Ich habe es mit –debug on ausgeführt, ja. Die Ausgabe in eine Textdatei geschrieben. Schau es dir hier auf Pastebin an: pastebin.com/GZdMfWnj Von dem, was ich sagen kann, nörgelt es an dem Glas, das ich manuell hinzugefügt habe? Aber wenn nicht so … wie soll ich es hinzufügen? :/ (Damit meine Kollegen es auch nutzen können und nicht auf die Konsole gehen und 100 Sachen installieren müssen)?
– AreusAstarte
10. Mai 2014 um 14:22 Uhr
@AreusAstarte hast du dafür eine Lösung gefunden? Ich stehe vor dem gleichen Problem. Ich habe eine Abhängigkeit, die als Systembereich definiert ist.
– rahul
1. August 2014 um 9:16 Uhr
Ein Grund dafür ist, wenn Sie sich auf ein Projekt verlassen, für das der übergeordnete Pom veraltet ist. Dies passiert häufig, wenn Sie das übergeordnete Pom aktualisieren, ohne es zu installieren/bereitzustellen.
Um zu sehen, ob dies der Fall ist, laufen Sie einfach mit mvn dependency:tree -X und suche nach dem genauen Fehler. Es wird erwähnt, dass es Dinge vermisst, von denen Sie wissen, dass sie sich im übergeordneten Pom befinden, nicht in dem Artefakt, von dem Sie abhängen (z. B. eine JAR-Version).
Die Lösung ist ziemlich einfach: Installieren Sie das übergeordnete pom mit mvn install -N und erneut versuchen
Vielen Dank dafür, ich habe mir die Haare ausgerissen, um das zum Laufen zu bringen, und das hat es gelöst!
– CCSab
28. Juli 2017 um 2:38 Uhr
Richtig, meins ist das gleiche, auch wenn ich das Modul einzeln gebaut habe und bei der Bestellung muss zuerst der übergeordnete Pom gebaut werden.
– MewX
11. April 2018 um 3:37 Uhr
Was macht der Schalter -N?
– Meena Chaudhary
3. April 2019 um 9:33 Uhr
-N erstellt ein Projekt, OHNE dessen Untermodule zu erstellen. Im Fall von “mvn install -N” installieren Sie also das übergeordnete Pom, ohne zu versuchen, auch seine untergeordneten Elemente zu erstellen (wodurch eine zirkuläre Abhängigkeit vermieden wird).
– Omri Spector
5. April 2019 um 6:49 Uhr
LÖSUNG (für mich): mvn dependency:tree -X Die Ausgabe enthielt WARNUNGEN wie die ursprüngliche Frage, aber auch FATALs wie: [FATAL] Non-readable POM /Users/me/.m2/repository/org/eclipse/jetty/toolchain/jetty-toolchain/1.7/jetty-toolchain-1.7.pom: input contained no data @ <full-path-to-same-pom-file>. Also ich rm -rf ~/.m2/repository/org/eclipse/jetty Dann mvn clean compile … die die erforderlichen Dateien erneut heruntergeladen hat – und seitdem ist alles in Ordnung.
– DouglasDD
21. März um 13:19 Uhr
Ich hatte einen ähnlichen Fehler. In meinem Fall war das Entfernen aller zugehörigen Artefakte aus dem lokalen Repository die Problemumgehung …
ähnliches Problem. musste mein .m2/repository löschen, damit es funktioniert.
– Mukul Goel
15. Juni 2017 um 9:47 Uhr
Dank! Ich hatte einen ähnlichen Fehler und das Entfernen der zugehörigen Artefakte in meinem .m2/repository löste das Problem …
– Stroboskopisch
22. Juni 2018 um 0:23 Uhr
Entfernen Sie den Repository-Ordner in .m2 und starten Sie mvn clean install.
Halten Sie uns über das Ergebnis auf dem Laufenden und viel Glück
Das hat es für mich getan. Manchmal scheint es beschädigte Dateien zu geben, wenn sie in das lokale .m2-Repo heruntergeladen werden
– DPM
26. September 2017 um 9:50 Uhr
Dies hat das Problem für mich nicht gelöst. Ich musste meinen .m2-Ordner wiederherstellen.
– Rokologo
1. April 2018 um 14:21 Uhr
Olivier D
Ich habe das gleiche Problem und vielleicht habe ich die Antwort. Ich habe ein Top-Level-Projekt MyProject Und Module1 Und Module2. Module2 kommt drauf an Module1 und der Eintrag wird als (Standard-)Abhängigkeit aufgeführt. Mein Projekt
<modules>
Module1
Module2
</modules>
mvn dependency:tree aus dem Ordner von MyProject ist OK: Modul2 hängt von Modul1 ab
Das Problem ist, wenn ich renne mvn dependency:tree innerhalb der Module2 Ordner. Ich bekomme dann die Fehlermeldung:
The POM for com.acme:Module2:version is invalid,
transitive dependencies (if any) will not be available
Nach einigen Recherchen habe ich festgestellt, dass die pom Datei, die vom Installationsteil des Builds erstellt/kopiert wurde als m2/com/acme/myproject/Module1/version/Module1-version.pom ist das Original pom Datei. Dieser verwendet Variablen für Versionen als (dupliziert in vielen anderen Modulen, die hier nicht aufgeführt sind) oder einen Systempfad (keine Wahl, eine Systemabhängigkeit zu haben). Diese Variablen sind in der übergeordneten POM-Datei definiert. Wenn ich alle ersetze ${} im Modul pom Datei durch ihre Werte dann ist alles in Ordnung. Grundsätzlich stehen beim Erstellen des Ganzen die Werte der Variablen allen abhängigen Modulen zur Verfügung, da dies derselbe Prozess ist. Wenn Sie ein einzelnes Modul erstellen, sind die im übergeordneten POM definierten Variablen nicht verfügbar.
Unter der Annahme, dass die Poms der Client- und Serverprojekte aufgrund einer nicht erfüllten Erweiterung ungültig sind, sollte Folgendes funktionieren … Wenn die “Client”- und “Server”-Projekte ihre Abhängigkeit von “Framework” in einem Tag definiert haben, können Sie zuerst installieren “Framework” mit der Option -N. Zuerst cd in das Framework-Verzeichnis, dann: mvn -N clean install
Die Option -N weist Maven an, nur das Root-Pom im lokalen Repo zu installieren und die untergeordneten Module zu überspringen. Wechseln Sie nun zu Ihrem untergeordneten Projekt und führen Sie Ihren Installationsbefehl in Ihrem Client- oder Servermodul erneut aus. Der Client- oder Server-Build sollte nun den übergeordneten Pom mit den Eigenschaften finden, die er im lokalen Repository benötigt.
Sie können den gleichen Effekt erzielen, indem Sie eine explizite Dateipfadreferenz mit dem relativePath-Tag im übergeordneten Tag Ihres untergeordneten Pom erstellen:
Die … Die Rahmen -Artefakt, das in Ihrem lokalen Repository verfügbar ist, bevor Sie eine ausführen install auf der Klient Projekt, da es keine Kopplung zwischen den beiden Projekten gibt (die Klient Artefakt ist kein module von dir Rahmen Projekt).
Um das Problem zu lösen, sollten Sie also ausführen mvn install auf Ihrem Rahmen project, sodass die gepackte JAR-Datei in Ihr lokales Repository kopiert wird. Dann liegt es an Maven, es zu entdecken und zu finden, wenn Sie eine Maven-Phase auf dem ausführen Klient Projekt.
Damit Ihre Artefakte von Ihrer Organisation gemeinsam genutzt werden können, sollten Sie Ihre Artefakte (Upload) auf einem Nexus-Hosting-Mirror bereitstellen.
Ich hatte das gleiche Problem. Ich verwalte alle Module, die von dem Projekt referenziert wurden, das ich zu erstellen versuchte. Und das Problem stellte sich heraus, dass ich “mvn deploy” für alle übergeordneten Projekte des Moduls ausführen musste, das diesen Fehler zeigte, wenn pom.xml in einem anderen Modul verwendet wurde. Hier ist die ganze Erklärung http://programtalk.com/java/i-used-to-get-this-maven-error-all-time/
14497000cookie-checkDas POM für ungültig ist, sind transitive Abhängigkeiten (falls vorhanden) nicht verfügbaryes
So weit ich mich erinnere Ungültiges POM für de.r2soft.empires.framework:Framework:jar:Alpha-1.2, transitive Abhängigkeiten (falls vorhanden) sind nicht verfügbar, aktivieren Sie die Debug-Protokollierung für weitere Details ist eine WARN-Nachricht. Versuchen Sie also, den Vorschlägen zu folgen, und führen Sie die Maven-Phase im Debug-Modus aus, um relevante Informationen zu erhalten. Dies kann mit erfolgen
-X
Möglichkeit.– tmarwen
10. Mai 2014 um 14:00 Uhr
Nun … Ich habe es mit –debug on ausgeführt, ja. Die Ausgabe in eine Textdatei geschrieben. Schau es dir hier auf Pastebin an: pastebin.com/GZdMfWnj Von dem, was ich sagen kann, nörgelt es an dem Glas, das ich manuell hinzugefügt habe? Aber wenn nicht so … wie soll ich es hinzufügen? :/ (Damit meine Kollegen es auch nutzen können und nicht auf die Konsole gehen und 100 Sachen installieren müssen)?
– AreusAstarte
10. Mai 2014 um 14:22 Uhr
@AreusAstarte hast du dafür eine Lösung gefunden? Ich stehe vor dem gleichen Problem. Ich habe eine Abhängigkeit, die als Systembereich definiert ist.
– rahul
1. August 2014 um 9:16 Uhr