Maven n'a pas pu résoudre les dépendances, les artefacts n'ont pas pu être résolus


132

C'est censé être un projet de travail de mon ami. Il a démontré le projet juste devant moi, puis j'ai copié le projet, je l'ai importé en tant que projet maven existant (j'utilise un m2eclipseplugin).

Et puis, cette erreur se produit. Cette erreur peut être reproduite à chaque fois que j'essaye de construire quelque chose avec maven.

Faire mvn dependency: tree, dependency: list ou le package de construction habituel entraînera la même erreur.

L'erreur lors de l'exécution de la construction du 'package' à partir d'Eclipse est:

[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

Et voici le contenu du 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>

J'ai essayé de télécharger la dernière version de maven et de l'inclure dans l'hélios éclipse, mais toujours le même problème. Le même message d'erreur se produit même lorsque je l'exécute dans la ligne de commande du shell (en dehors de l'éclipse).

Qu'est-ce que je rate?


voir votre chemin dans la variable système.Dans mon cas, le chemin pour maven 3 était correct dans la variable utilisateur, mais après avoir changé le chemin vers maven 2 dans la variable système, cela fonctionnait bien.aucune idée pourquoi
aastha

Réponses:


91

Il semble qu'il vous manque des dépôts Maven. Demandez à vos amis .m2/settings.xml, et vous voudrez probablement mettre à jour le POM pour y inclure les référentiels.

--edit: après quelques recherches rapides sur Google, essayez d'ajouter ceci à votre 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
Je vous remercie ! Mon ami a mentionné que cela fonctionnait dans son ordinateur portable car il avait déjà mis les dépendances en cache dans le .m2 / et maven n'essaye plus de les télécharger. Et il a partagé les entrées du référentiel, certaines sont comme votre découverte, et maintenant cela a bien fonctionné maintenant .. Merci pour votre temps! Et si je puis savoir, quels mots-clés utilisez-vous pour savoir quels référentiels utiliser? J'ai essayé googler aussi hier, mais j'ai fini par être misérable. haha
bertie

6
Je savais que c'était un problème de référentiel à cause des messages d'avertissement "POM for xxx is missing". Alors j'ai juste cherché sur "springsource maven" et suis venu avec la FAQ du projet springsource, et son entrée pour le configurer pour fonctionner avec Maven.
wmorrell

Sa première erreur d'artefact est un fichier jar fourni com.springsource.javax.servlet. S'il est fourni, pourquoi cela aurait-il quelque chose à voir avec setting.xml?
Philip Rego

@PhilipRego .m2/settings.xmlpeut spécifier des listes de référentiels en dehors des listes standard sur repo.maven.apache.org. Dans ce cas, les JAR proviennent d'un référentiel SpringSource et ne sont pas sur Maven Central. J'avais supposé que l'ami avait les dépôts SpringSource répertoriés en local .m2/settings.xml, ne provoquant aucune erreur de recherche car les artefacts seraient trouvés dans des dépôts maven alternatifs. Au lieu de cela, les fichiers JAR ont été mis en cache et aucune recherche n'a eu lieu.
wmorrell

1
@PhilipRego Ces dépendances ne sont pas marquées comme fournies. Même si la dépendance est fournie, les définitions d'interface sont nécessaires pour compiler le code; cela signifie que vous devez disposer des fichiers JAR définissant les interfaces utilisées. Tout ce que cela signifie pour une dépendance fournie est que les fichiers JAR ne sont pas fournis avec votre code.
wmorrell

15

Maven a gardé vos fichiers en cache et ne réessayez pas de les télécharger. Vous pouvez simplement «l'aider» manuellement en supprimant le répertoire .m2, puis notre ami téléchargera tout sur les anciennes dépendances.


7

Comme source alternative au même problème, cette réponse cite l'utilisation de Maven 3 par rapport à Maven 2 comme cause potentielle de ce problème. Comme je peux le dire, cela est dû à des changements dans la résolution du dépôt local qui a été changé dans Maven 3. Mettre ceci ici au cas où quelqu'un d'autre chercherait et atteindrait cette réponse (comme je l'ai fait).


7

Les artifactIdpour toutes les dépendances qui n'ont pas pu être téléchargées sont incorrectes - pour une raison quelconque, elles sont préfixées avec com.springsource. Problème de copier / coller?

Vous pouvez essayer de les remplacer comme suit.

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

Vous pouvez également ajouter le référentiel central maven pour ces artefacts au cas où ils ne seraient pas disponibles dans les référentiels spécifiés.

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

J'ai essayé ça, et toujours erroné? Voici la sortie partielle d'Eclipse après avoir effectué une tâche de package: Impossible d'exécuter l'objectif sur le jackpot du projet: Impossible de résoudre les dépendances pour le projet com.jeteo: jackpot: war: 1.0-SNAPSHOT: Les artefacts suivants n'ont pas pu être résolus: javax.servlet: servlet-api: jar: 2.5.0, javax.servlet: jstl: jar: 1.2.0, javax.transaction: jta: jar: 1.1.0: Impossible de trouver javax.servlet: servlet-api: jar: 2.5.0 dans repository.springsource.com/maven/bundles/release a été mis en cache dans le référentiel local, la résolution ne sera pas tentée à nouveau avant l'intervalle de mise à jour de <cutted> ....
bertie

@Albert Kam. Réponse mise à jour pour inclure une référence au référentiel central maven pour les artefacts manquants
Raghuram

Le préfixe com.springsource signifie que les artefacts proviennent du référentiel d'entreprise de printemps
eis

5

Téléchargez le fichier jar manuellement, puis exécutez la commande à partir du dossier où le fichier est enregistré:

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

Le jar file, jar_file_name, group_id, artifact_idet version_nosont disponibles sur la page du référentiel Maven.


4

J'ai eu un problème similaire et je l'ai résolu en ajoutant les dépôts ci-dessous dans mon 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

J'ai résolu mon problème. Puisque les dépôts étaient mis en cache, je devais le forcer à obtenir la dernière version.


1

J'ai un message similaire et mon problème était quelques préférences de proxy dans mon settings.xml. Alors je les ai désactivés et tout fonctionne bien.


1

Ce type de problèmes est causé par deux raisons:

  1. le charme d'une dépendance est faux
  2. la configuration du paramètre mvn (c.-à-d. ~ / .m2 / settings.xml) est incorrecte

Si la plupart des dépendances peuvent être téléchargées, la raison 1 peut être le bogue le plus probable. Au contraire, si la plupart des dépendances ont le problème, alors vous devriez jeter un œil à settings.xml .

Eh bien, j'ai essayé de résoudre mon problème tout l'après-midi, et finalement je l'ai compris. Mon problème se produit dans settings.xml, pas la perte ou l'orthographe incorrecte de settings.xml , mais la perte de activeProfiles .


0

J'ai eu ce problème. Dans mon cas, cela a été causé par IntelliJ Idea qui a joué avec certains des fichiers pom.xml (ce qu'il semble aimer faire!). Je viens de revenir à la copie originale et les choses ont fonctionné à nouveau!


0

J'ai eu ce problème aussi, il s'est avéré que c'était à cause de NetBeans ajoutant quelque chose à mon fichier pom.xml. Vérifiez que rien n'a été ajouté depuis les précédents déploiements réussis.


0

Mon projet EAR avait 2 modules * .ear et * .war et j'ai eu cette erreur de dépendance sur le *.warprojet en essayant mvn eclipse:eclipse. Résolu le problème en corrigeant le problème d'encodage utf-8 dans le *.warprojet. mvn -Xou les -eoptions n'étaient pas utiles ici.


0

Il s'avère que cela s'est produit à cause du pare-feu de mon ordinateur. Le désactiver a fonctionné pour moi.


1
Bien que la désactivation du pare-feu sur votre ordinateur puisse fonctionner, en fonction de la configuration de votre réseau, je recommanderais de rechercher une solution plus sécurisée, par exemple en ajoutant une exception pour le processus maven ou maven central ... Sonne comme une configuration de pare-feu mal configurée / très stricte pour moi si
Capricorne

@Capricorn à droite, ce n'est pas le meilleur mais pour moi, j'ai essayé toutes les solutions recommandées et cela fonctionne très bien là-dessus. Si vous avez une meilleure solution, dites-moi s'il vous plaît, merci !!! édité: vous avez mentionné "l'ajout d'une exception pour le processus maven ou maven central", je ne comprends pas vraiment, pouvez-vous les spécifier ...
Duc Thanh

0

Ont rencontré un tel problème. La cause première est le dossier .m2. Vous devez vous assurer que tout ce que vous essayez d'accéder est présent dans votre dossier .m2 (c'est votre dépôt local). Si le truc est là, vous êtes bon. Ceci est généralement présent dans le dossier des utilisateurs sur votre système (que ce soit mac / linux ou même Windows)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.