Maven Abhängigkeiten konnten nicht aufgelöst werden, Artefakte konnten nicht aufgelöst werden


132

Dies soll ein Arbeitsprojekt meines Freundes sein. Er hat das Projekt direkt vor mir demonstriert, und dann habe ich das Projekt kopiert und als vorhandenes Maven-Projekt importiert (ich verwende das m2eclipsePlugin).

Und dann tritt dieser Fehler auf. Dieser Fehler kann jedes Mal reproduziert werden, wenn ich versuche, etwas mit maven zu erstellen.

Wenn Sie mvn dependency: tree, dependency: list oder das übliche Build-Paket ausführen, wird derselbe Fehler ausgegeben.

Der Fehler beim Ausführen des 'Paket'-Builds von Eclipse ist:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Jackpot Portal Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for javax.servlet:com.springsource.javax.servlet:jar:2.5.0 is missing, no dependency information available
[WARNING] The POM for javax.servlet:com.springsource.javax.servlet.jsp.jstl:jar:1.2.0 is missing, no dependency information available
[WARNING] The POM for javax.transaction:com.springsource.javax.transaction:jar:1.1.0 is missing, no dependency information available
[WARNING] The POM for org.slf4j:com.springsource.slf4j.log4j:jar:1.5.6 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.963s
[INFO] Finished at: Tue Jan 11 01:55:41 WIT 2011
[INFO] Final Memory: 2M/56M
[INFO] ------------------------------------------------------------------------

[ERROR] Failed to execute goal on project jackpot: Could not resolve dependencies 
for project com.jeteo:jackpot:war:1.0-SNAPSHOT: The following artifacts could 
not be resolved: javax.servlet:com.springsource.javax.servlet:jar:2.5.0,
javax.servlet:com.springsource.javax.servlet.jsp.jstl:jar:1.2.0, 
javax.transaction:com.springsource.javax.transaction:jar:1.1.0, 
org.slf4j:com.springsource.slf4j.log4j:jar:1.5.6: Failure to find 
javax.servlet:com.springsource.javax.servlet:jar:2.5.0 in 
http://repository.springsource.com/maven/bundles/release was cached in the 
local repository, resolution will not be reattempted until the update 
interval of com.springsource.repository.bundles.release has elapsed or 
updates are forced -> [Help 1]

[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

Und hier ist der Inhalt der 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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jeteo</groupId>
    <artifactId>jackpot</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>Jackpot Portal Webapp</name>
    <url>http://www.jeteo.com</url>
    <properties>
        <java-version>1.6</java-version>
        <org.springframework-version>3.0.3.RELEASE</org.springframework-version>
        <org.hibernate-version>3.6.0.Final</org.hibernate-version>
        <org.aspectj-version>1.6.9</org.aspectj-version>
        <org.slf4j-version>1.5.10</org.slf4j-version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>net.sf.jt400</groupId>
            <artifactId>jt400</artifactId>
            <version>6.6</version>
            <scope>compile</scope>
        </dependency>

        <!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${org.hibernate-version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${org.hibernate-version}</version>
            <scope>compile</scope>
        </dependency>

        <!-- AspectJ -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>com.springsource.javax.servlet</artifactId>
            <version>2.5.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>com.springsource.javax.servlet.jsp.jstl</artifactId>
            <version>1.2.0</version>
            <scope>provided</scope>
        </dependency>
        <!--
        <dependency>
         <groupId>javax.persistence</groupId>
         <artifactId>com.springsource.javax.persistence</artifactId>
         <version>1.0.0</version>
         <scope>compile</scope>
        </dependency>
        -->
        <dependency>
            <groupId>javax.transaction</groupId>
            <artifactId>com.springsource.javax.transaction</artifactId>
            <version>1.1.0</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>com.springsource.slf4j.log4j</artifactId>
            <version>1.5.6</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.11</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>

    </dependencies>
    <repositories>
        <!-- Spring releases -->
        <repository>
            <id>com.springsource.repository.bundles.release</id>
            <name>Spring Maven Repository Repository</name>
            <url>http://repository.springsource.com/maven/bundles/release</url>
        </repository>
        <!-- For hibernate 3.6 support -->
        <repository>
            <id>jboss</id>
            <url>https://repository.jboss.org/nexus/content/groups/public/</url>
        </repository>
    </repositories>
    <build>
        <finalName>jackpot</finalName>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>tomcat-maven-plugin</artifactId>
                <version>1.1</version>
                <configuration>
                    <url>http://localhost:8080/manager</url>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Ich habe versucht, die neueste Version von maven herunterzuladen und sie in die Eclipse-Helios aufzunehmen, aber immer noch das gleiche Problem. Die gleiche Fehlermeldung tritt auch dann auf, wenn ich sie in der Shell-Befehlszeile (außerhalb von Eclipse) ausführe.

Was vermisse ich?


Sehen Sie Ihren Pfad in der Systemvariablen. In meinem Fall war der Pfad für Maven 3 in der Benutzervariablen korrekt, aber nachdem der Pfad in der Systemvariablen zu Maven 2 geändert wurde, funktionierte er einwandfrei. Keine Ahnung warum
aastha

Antworten:


91

Sieht so aus, als ob Ihnen einige Maven-Repos fehlen. Fragen Sie nach dem Ihres Freundes .m2/settings.xml, und Sie möchten wahrscheinlich das POM aktualisieren, um die dortigen Repositorys einzuschließen.

--edit: Versuchen Sie nach einigem schnellen Googeln, dies Ihrem POM hinzuzufügen:

<repository>
    <id>com.springsource.repository.bundles.release</id>
    <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name>
    <url>http://repository.springsource.com/maven/bundles/release</url>
</repository>
<repository>
    <id>com.springsource.repository.bundles.external</id>
    <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
    <url>http://repository.springsource.com/maven/bundles/external</url>
</repository>

5
Danke ! Mein Freund erwähnte, dass es in seinem Laptop funktionierte, weil er bereits die Abhängigkeiten in der .m2 / zwischengespeichert hatte und maven nicht mehr versucht, sie herunterzuladen. Und er hat die Repository-Einträge geteilt, einige sind wie Ihre Entdeckung, und jetzt hat es gut funktioniert. Vielen Dank für Ihre Zeit! Und wenn ich weiß, welche Schlüsselwörter verwenden Sie, um herauszufinden, welche Repositorys verwendet werden sollen? Ich habe gestern auch versucht zu googeln, aber ich bin unglücklich geworden. haha
Bertie

6
Ich wusste, dass es sich um ein Repository-Problem handelt, da die Warnmeldungen "POM für xxx fehlt" angezeigt werden. Also habe ich nur nach "springsource maven" gesucht und mir die FAQ zum springsource-Projekt und dessen Eintrag für die Einrichtung für die Arbeit mit Maven ausgedacht.
Wmorrell

Sein erster Artefaktfehler ist ein bereitgestelltes jar com.springsource.javax.servlet. Wenn es bereitgestellt wird, warum sollte es dann etwas mit settings.xml zu tun haben?
Philip Rego

@PhilipRego .m2/settings.xmlkann Repository-Listen außerhalb der Standardlisten unter angeben repo.maven.apache.org. In diesem Fall stammen die JARs aus einem SpringSource-Repository und befinden sich nicht in Maven Central. Ich hatte angenommen, dass der Freund die SpringSource-Repos lokal aufgelistet hatte .m2/settings.xml, was keine Suchfehler verursachte, da die Artefakte in alternativen Maven-Repos gefunden würden. Stattdessen wurden die JARs zwischengespeichert, und es wurden überhaupt keine Suchvorgänge durchgeführt.
Wmorrell

1
@PhilipRego Diese Abhängigkeiten sind nicht als bereitgestellt markiert. Selbst wenn die Abhängigkeit angegeben ist, sind die Schnittstellendefinitionen erforderlich, um den Code zu kompilieren. Das bedeutet, dass Sie über die JAR-Dateien verfügen müssen, die die verwendeten Schnittstellen definieren. Für eine bereitgestellte Abhängigkeit bedeutet dies lediglich, dass die JARs nicht mit Ihrem Code gepackt sind.
Wmorrell

15

Maven hat Ihre Dateien im Cache gespeichert und versucht nicht, sie erneut herunterzuladen. Sie können ihm einfach manuell "helfen", indem Sie das .m2-Verzeichnis löschen. Dann lädt unser Freund alles über die alten Abhängigkeiten herunter.



7

Die artifactIdfür alle Abhängigkeiten, die nicht heruntergeladen werden konnten, sind falsch - aus irgendeinem Grund wird ihnen ein Präfix vorangestellt com.springsource. Problem beim Ausschneiden / Einfügen?

Sie können versuchen, sie wie folgt zu ersetzen.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.transaction</groupId>
    <artifactId>jta</artifactId>
    <version>1.1.0</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.6</version>
</dependency>

Möglicherweise möchten Sie auch das zentrale Maven-Repository für diese Artefakte hinzufügen, falls sie in den angegebenen Repositorys nicht verfügbar sind.

<repository>
    <id>maven2</id>
    <url>http://repo1.maven.org/maven2</url>
</repository>

Ich habe das versucht und immer noch irrtümlich? Hier ist die Teilausgabe von Eclipse nach dem Ausführen einer Paketaufgabe: Fehler beim Ausführen des Ziels für den Projekt-Jackpot: Abhängigkeiten für das Projekt com.jeteo konnten nicht aufgelöst werden: jackpot: war: 1.0-SNAPSHOT: Die folgenden Artefakte konnten nicht behoben werden: javax.servlet: servlet-api: jar: 2.5.0, javax.servlet: jstl: jar: 1.2.0, javax.transaction: jta: jar: 1.1.0: javax.servlet: servlet-api: jar: 2.5.0 konnte nicht gefunden werden in repository.springsource.com/maven/bundles/release wurde im lokalen Repository zwischengespeichert, die Auflösung wird erst im Aktualisierungsintervall von <cutted> erneut
versucht

@ Albert Kam. Die Antwort wurde aktualisiert und enthält nun einen Verweis auf das zentrale Maven-Repository für die fehlenden Artefakte
Raghuram,

com.springsource Präfix bedeutet, dass die Artefakte aus dem Spring Enterprise Repository stammen
Eis

5

Laden Sie das Glas manuell herunter und führen Sie den Befehl aus dem Ordner aus, in dem das Glas gespeichert ist:

mvn install:install-file -Dfile=*jar_file_name*.jar-DgroupId=*group_id* -DartifactId=*artifact_id* -Dversion=*version_no* -Dpackaging=jar

Die jar file, jar_file_name, group_id, artifact_idund version_nosind von der Maven - Repository - Seite zur Verfügung.


4

Ich hatte ein ähnliches Problem und habe es behoben, indem ich die folgenden Repos in meine pom.xml eingefügt habe:

<repository>
    <id>org.springframework.maven.release</id>
    <name>Spring Maven Release Repository</name>
    <url>http://repo.springsource.org/libs-release-local</url>
    <releases><enabled>true</enabled></releases>
    <snapshots><enabled>false</enabled></snapshots>
</repository>
<!-- For testing against latest Spring snapshots -->
<repository>
    <id>org.springframework.maven.snapshot</id>
    <name>Spring Maven Snapshot Repository</name>
    <url>http://repo.springsource.org/libs-snapshot-local</url>
    <releases><enabled>false</enabled></releases>
    <snapshots><enabled>true</enabled></snapshots>
</repository>
<!-- For developing against latest Spring milestones -->
<repository>
    <id>org.springframework.maven.milestone</id>
    <name>Spring Maven Milestone Repository</name>
    <url>http://repo.springsource.org/libs-milestone-local</url>
    <snapshots><enabled>false</enabled></snapshots>
</repository>

4
mvn clean install -U

Mein Problem gelöst. Da die Repos zwischengespeichert wurden, musste ich sie erzwingen, um die neueste Version zu erhalten.


1

Ich habe eine ähnliche Meldung und mein Problem waren einige Proxy-Einstellungen in meiner settings.xml. Also habe ich sie deaktiviert und alles funktioniert gut.


1

Diese Art von Problemen wird aus zwei Gründen verursacht:

  1. Der Zauber einer Abhängigkeit ist falsch
  2. Die Konfiguration der MVN-Einstellung (dh ~ / .m2 / settings.xml) ist falsch

Wenn die meisten Abhängigkeiten heruntergeladen werden können, ist der Grund 1 möglicherweise der wahrscheinlichste Fehler. Im Gegenteil, wenn die meisten Abhängigkeiten das Problem haben, sollten Sie sich settings.xml ansehen .

Nun, ich habe den ganzen Nachmittag versucht, mein Problem zu beheben, und schließlich habe ich es bekommen. Mein Problem tritt in settings.xml auf, nicht in der verlorenen oder falschen Schreibweise von settings.xml , sondern im Verlust von activeProfiles .


0

Ich hatte dieses Problem. In meinem Fall wurde es durch IntelliJ Idea verursacht, das mit einigen der pom.xml-Dateien herumgespielt hat (was es anscheinend Spaß macht!). Ich bin gerade zur Originalkopie zurückgekehrt und es hat wieder funktioniert!


0

Ich hatte auch dieses Problem, es stellte sich heraus, dass NetBeans meiner Datei pom.xml etwas hinzufügte. Überprüfen Sie, ob seit früheren erfolgreichen Bereitstellungen nichts hinzugefügt wurde.


0

Mein EAR-Projekt hatte 2 Module * .ear und * .war und ich habe *.warbeim Versuch diesen Abhängigkeitsfehler vom Projekt erhalten mvn eclipse:eclipse. Es wurde behoben, indem das Problem mit der utf-8-Codierung im *.warProjekt behoben wurde . mvn -Xoder -eOptionen waren hier nicht hilfreich.


0

Es stellt sich heraus, dass es aufgrund der Firewall auf meinem Computer passiert ist. Das Ausschalten hat bei mir funktioniert.


1
Während das Ausschalten der Firewall auf Ihrem Computer möglicherweise funktioniert, würde ich abhängig von Ihrem Netzwerk-Setup empfehlen, nach einer sichereren Lösung zu suchen, z. B. indem Sie eine Ausnahme für den Maven-Prozess oder die Maven-Zentrale hinzufügen ... Klingt nach einem falsch konfigurierten / sehr strengen Firewall-Setup ich aber
Steinbock

@ Capricorn richtig, das ist nicht das Beste, aber für mich habe ich alle empfohlenen Lösungen ausprobiert und es funktioniert einfach gut. Wenn Sie eine bessere Lösung haben, sagen Sie mir bitte, danke !!! bearbeitet: Sie erwähnten "Hinzufügen einer Ausnahme für den Maven-Prozess oder Maven Central", ich verstehe es nicht wirklich, können Sie diese angeben ...
Duc Thanh

0

Bin auf ein solches Problem gestoßen. Die Hauptursache ist der Ordner .m2. Sie müssen sicherstellen, dass alles, auf das Sie zugreifen möchten, in Ihrem .m2-Ordner vorhanden ist (dies ist Ihr lokales Repo). Wenn das Zeug da ist, bist du gut. Dies ist normalerweise im Benutzerordner Ihres Systems vorhanden (sei es Mac / Linux oder sogar Windows).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.