Maven Nie można rozwiązać zależności, nie można rozwiązać artefaktów


136

To ma być działający projekt mojego przyjaciela. Pokazał projekt tuż przede mną, a następnie skopiowałem go, zaimportowałem jako istniejący projekt mavena (używam m2eclipsewtyczki).

A potem pojawia się ten błąd. Ten błąd można odtworzyć za każdym razem, gdy próbuję zbudować coś za pomocą mavena.

Wykonanie zależności mvn: tree, dependency: list lub zwykłego pakietu kompilacji spowoduje ten sam błąd.

Błąd podczas uruchamiania kompilacji „pakietu” z eclipse to:

[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

A oto treść 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>

Próbowałem pobrać najnowszą wersję mavena i umieściłem ją w heliosie zaćmienia, ale wciąż ten sam problem. Ten sam komunikat o błędzie pojawia się nawet wtedy, gdy uruchamiam go w linii poleceń powłoki (poza zaćmieniem).

czego mi brakuje?


zobaczyć swoją ścieżkę w systemie variable.In moim przypadku ścieżki dla Maven 3 słusznie zmiennej użytkownika, ale po zmianie ścieżki do Maven 2 w zmiennej systemowej to działa fine.no pojęcia dlaczego
Aastha

Odpowiedzi:


96

Wygląda na to, że brakuje Ci niektórych repozytoriów Maven. Zapytaj swojego przyjaciela .m2/settings.xml, a prawdopodobnie będziesz chciał zaktualizować POM, aby zawierał tam repozytoria.

--edit: po szybkim googlowaniu, spróbuj dodać to do swojego POM:

<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
Dziękuję Ci ! Mój przyjaciel wspomniał, że zadziałało to na jego laptopie, ponieważ ma już buforowane zależności w pliku .m2 /, a maven nie próbuje ich już pobierać. I udostępnił wpisy repozytorium, niektóre są jak twoje odkrycie, a teraz działało dobrze .. Dziękuję za poświęcony czas! A jeśli mogę wiedzieć, jakich słów kluczowych używasz, aby dowiedzieć się, jakich repozytoriów użyć? Wczoraj też próbowałem googlować, ale skończyło mi się nieszczęśliwie. haha
bertie

6
Wiedziałem, że to problem z repozytorium z powodu komunikatów ostrzegawczych „Brak POM dla xxx”. Poszukałem więc po prostu „springsource maven” i wymyśliłem często zadawane pytania dotyczące projektu springsource oraz jego wpis umożliwiający skonfigurowanie go do pracy z Mavenem.
wmorrell

Jego pierwszym błędem związanym z artefaktem jest dostarczony plik jar com.springsource.javax.servlet. Jeśli zostanie podany, dlaczego miałoby to mieć coś wspólnego z setting.xml?
Philip Rego

@PhilipRego .m2/settings.xmlmoże określać listy repozytoriów poza standardowymi w repo.maven.apache.org. W tym przypadku pliki JAR pochodzą z repozytorium SpringSource i nie znajdują się w Maven Central. Założyłem, że znajomy miał repozytoria SpringSource wymienione w lokalnym .m2/settings.xml, co nie powoduje błędów wyszukiwania, ponieważ artefakty zostaną znalezione w alternatywnych repozytoriach maven. Zamiast tego pliki JAR zostały zapisane w pamięci podręcznej i żadne wyszukiwania nie miały miejsca.
wmorrell

1
@PhilipRego Te zależności nie są oznaczone jako dostarczone. Nawet jeśli zależność jest podana, definicje interfejsów są wymagane do kompilowania kodu; oznacza to, że musisz mieć pliki JAR definiujące używane interfejsy. Wszystko to oznacza dla podanej zależności to, że pliki JAR nie są spakowane z Twoim kodem.
wmorrell

15

Maven zachował twoje pliki w pamięci podręcznej i nie próbuj ich ponownie pobierać. Możesz po prostu ręcznie „pomóc” mu, usuwając .m2katalog, a wtedy nasz przyjaciel pobierze wszystko przez stare zależności.


7

Jako alternatywne źródło tego samego problemu, ta odpowiedź wymienia użycie Maven 3 w porównaniu z Maven 2 jako potencjalną przyczynę tego problemu. Prawie jak mogę stwierdzić, jest to spowodowane zmianami w rozdzielczości lokalnego repozytorium, która została zmieniona w Maven 3. Umieszczenie tego tutaj na wypadek, gdyby ktoś inny szukał go w Google i osiągnął tę odpowiedź (tak jak ja).


7

artifactIdDla wszystkich zależności, które udało się pobrać są błędne - z jakiegoś powodu są prefiksem com.springsource. Problem z wycinaniem / wklejaniem?

Możesz spróbować je wymienić w następujący sposób.

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

Możesz również dodać centralne repozytorium maven dla tych artefaktów na wypadek, gdyby nie były dostępne w określonych repozytoriach.

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

Spróbowałem tego i nadal jestem błędny? Oto częściowe dane wyjściowe zaćmienia po wykonaniu zadania związanego z pakietem: Nie udało się zrealizować celu dotyczącego jackpota projektu: Nie można rozwiązać zależności dla projektu com.jeteo: jackpot: wojna: 1.0-SNAPSHOT: Nie można rozwiązać następujących artefaktów: javax.servlet: servlet-api: jar: 2.5.0, javax.servlet: jstl: jar: 1.2.0, javax.transaction: jta: jar: 1.1.0: Nie można znaleźć javax.servlet: servlet-api: jar: 2.5.0 w repository.springsource.com/maven/bundles/release został zbuforowany w lokalnym repozytorium, rozdzielczość nie zostanie podjęta ponownie aż do interwału aktualizacji <cutted> ....
bertie

@Albert Kam. Zaktualizowana odpowiedź, aby uwzględnić odniesienie do centralnego repozytorium maven dla brakujących artefaktów
Raghuram,

Przedrostek com.springsource oznacza, że ​​artefakty pochodzą z wiosennego repozytorium przedsiębiorstwa
eis

6

Pobierz słoik ręcznie, a następnie wykonaj polecenie z folderu, w którym zapisano jar:

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

jar file, jar_file_name, group_id, artifact_idI version_nosą dostępne w repozytorium Maven stronie.


4

Miałem podobny problem i naprawiłem go, dodając poniższe repozytoria do mojego pom.xml:

<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

Rozwiązał mój problem. Ponieważ repozytoria były buforowane, musiałem wymusić na nim pobranie najnowszej wersji.


2

Tego rodzaju problemy są spowodowane dwoma przyczynami:

  1. zaklęcie uzależnienia jest złe
  2. konfiguracja ustawienia mvn (tj. ~ / .m2 / settings.xml) jest nieprawidłowa

Jeśli można pobrać większość zależności, przyczyną 1 może być najbardziej prawdopodobny błąd. Wręcz przeciwnie, jeśli większość zależności ma problem, powinieneś rzucić okiem na settings.xml .

Cóż, próbowałem rozwiązać swój problem przez całe popołudnie iw końcu udało mi się to. Mój problem występuje w settings.xml, a nie utrata lub zła pisownia settings.xml , ale utrata activeProfiles .


1

Otrzymałem podobny komunikat i moim problemem były preferencje serwera proxy w moim pliku settings.xml. Więc je wyłączyłem i wszystko działa dobrze.


0

Miałem ten problem. W moim przypadku było to spowodowane tym, że IntelliJ Idea bawił się niektórymi plikami pom.xml (co wydaje się lubić!). Właśnie wróciłem do oryginalnej kopii i wszystko znowu działało!


0

Ja też miałem ten problem, okazało się, że to przez to, że NetBeans dodał coś do mojego pliku pom.xml. Dokładnie sprawdź, czy nic nie zostało dodane od czasu poprzednich udanych wdrożeń.


0

Mój projekt EAR miał 2 moduły * .ear i * .war i *.warpodczas próby pojawił się ten błąd zależności od projektu mvn eclipse:eclipse. Rozwiązano go, naprawiając problem z kodowaniem utf-8 w *.warprojekcie. mvn -Xlub -eopcje nie pomogły tutaj.


0

Okazuje się, że stało się to z powodu firewalla na moim komputerze. Wyłączenie go działało dla mnie.


1
Podczas gdy wyłączenie zapory na twoim komputerze może działać, w zależności od konfiguracji sieci, zalecałbym poszukanie bezpieczniejszego rozwiązania, np. Poprzez dodanie wyjątku dla procesu Maven lub Maven Central ... Brzmi jak źle skonfigurowana / bardzo rygorystyczna konfiguracja zapory do ja chociaż
Koziorożec

@ Koziorożec racja, to nie jest najlepsze, ale dla mnie wypróbowałem wszystkie zalecane rozwiązania i na tym działa dobrze. Jeśli masz jakieś lepsze rozwiązanie, powiedz mi, dziękuję !!! zredagowano: wspomniałeś o „dodaniu wyjątku dla procesu maven lub centrali maven”, naprawdę nie rozumiem, czy możesz określić te ...
Duc Thanh

0

Natknąłem się na taki problem. Główną przyczyną jest folder .m2. Musisz upewnić się, że wszystko, do czego próbujesz uzyskać dostęp, znajduje się w folderze .m2 (to jest twoje lokalne repozytorium). Jeśli coś tam jest, jesteś dobry. Zwykle znajduje się w folderze użytkowników w systemie (czy to Mac / Linux, a nawet Windows)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.