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?

bertie
źródło
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>
wmorrell
źródło
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.

Chaibi Alaa
źródło
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).

shiri
źródło
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>
Raghuram
źródło
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.

Cjo
źródło
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>
AAgg
źródło
4
mvn clean install -U

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

Burak Kaan Bilgehan
źródło
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 .

Będzie
źródło
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.

kdoteu
źródło
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!

JonnyRaa
źródł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ń.

Eduardo Dennis
źródło
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.

Barun
źródło
0

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

Duc Thanh
źródło
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)

Akash Verma
źródło