Maven no pudo resolver dependencias, los artefactos no pudieron resolverse

132

Se supone que este es un proyecto de trabajo de mi amigo. Él demostró el proyecto justo en frente de mí, y luego copié el proyecto, lo importé como un proyecto Maven existente (estoy usando el m2eclipsecomplemento).

Y luego, se produce este error. Este error se puede reproducir cada vez que intento construir algo con Maven.

Hacer mvn dependency: tree, dependency: list, o el paquete de compilación habitual, dará como resultado el mismo error.

El error al ejecutar la compilación 'package' desde eclipse es:

[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

Y aquí está el contenido de 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>

Intenté descargar la versión más nueva de maven, y la incluí en el eclipse helios, pero sigue siendo el mismo problema. El mismo mensaje de error ocurre incluso cuando lo ejecuto en la línea de comando de shell (fuera del eclipse).

¿Qué me estoy perdiendo?

bertie
fuente
vea su ruta en la variable del sistema. En mi caso, la ruta para maven 3 era correcta en la variable de usuario, pero después de cambiar la ruta a maven 2 en la variable del sistema funcionaba bien. No tengo idea de por qué
aastha 05 de

Respuestas:

91

Parece que te faltan algunos repositorios de Maven. Pide el de tu amigo .m2/settings.xmly probablemente quieras actualizar el POM para incluir los repositorios allí.

--editar: después de buscar rápidamente en Google, intente agregar esto a su 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
fuente
55
Gracias ! Mi amigo mencionó que funcionaba en su computadora portátil porque ya tenía las dependencias almacenadas en caché en el .m2 / y maven ya no intenta descargarlas. Y compartió las entradas del repositorio, algunas son como su hallazgo, y ahora funcionó bien ahora. ¡Gracias por su tiempo! Y si puedo saber, ¿qué palabras clave usa para averiguar qué repositorios usar? Intenté buscar en Google también ayer, pero terminé miserable. jaja
bertie
66
Sabía que era un problema de repositorio debido a los mensajes de advertencia "Falta POM para xxx". Así que solo busqué en "springsource maven" y se me ocurrió el FAQ del proyecto springsource, y su entrada para configurarlo para que funcione con Maven.
wmorrell
Su primer error de artefacto es un jar com.springsource.javax.servlet proporcionado. Si se proporciona, ¿por qué tendría algo que ver con setting.xml?
Philip Rego el
@PhilipRego .m2/settings.xmlpuede especificar listados de repositorio fuera de los estándares en repo.maven.apache.org. En este caso, los JAR provienen de un repositorio SpringSource y no están en Maven Central. Supuse que el amigo tenía los repositorios SpringSource listados en local .m2/settings.xml, sin causar errores de búsqueda porque los artefactos se encontrarían en repositorios alternativos de Maven. En cambio, los JAR se almacenaron en caché y no se realizaron búsquedas en absoluto.
wmorrell
1
@PhilipRego Estas dependencias no están marcadas como provistas. Incluso si se proporciona la dependencia, se requieren las definiciones de interfaz para compilar el código; eso significa que debe tener los archivos JAR que definen las interfaces utilizadas. Todo lo que significa para una dependencia proporcionada es que los JAR no están empaquetados con su código.
wmorrell
15

Maven mantuvo sus archivos en caché, y no vuelva a intentar descargarlos. Simplemente puede 'ayudarlo' manualmente eliminando el directorio .m2, y luego nuestro amigo descargará todo a través de las dependencias anteriores.

Chaibi Alaa
fuente
7

Como una fuente alternativa al mismo problema, esta respuesta cita el uso de Maven 3 versus Maven 2 como la posible causa de este problema. Por lo que puedo decir, esto se debe a los cambios en la resolución del repositorio local que se cambió en Maven 3. Poniendo esto aquí en caso de que alguien más busque en Google y llegue a esta respuesta (como lo hice yo).

shiri
fuente
7

Las artifactIdde todas las dependencias que no se pudieron descargar son incorrectas, por alguna razón tienen el prefijo com.springsource. Cortar / pegar problema?

Puede intentar reemplazarlos de la siguiente manera.

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

También es posible que desee agregar el repositorio central de maven para estos artefactos en caso de que no estén disponibles en los repositorios especificados.

<repository>
    <id>maven2</id>
    <url>http://repo1.maven.org/maven2</url>
</repository>
Raghuram
fuente
Intenté eso, ¿y aún me da error? Aquí está el resultado parcial del eclipse después de hacer una tarea de paquete: Error al ejecutar el objetivo en el premio mayor del proyecto: No se pudieron resolver las dependencias para el proyecto com.jeteo: jackpot: war: 1.0-INSTANTÁNEO: Los siguientes artefactos no se pudieron resolver: javax.servlet: servlet-api: jar: 2.5.0, javax.servlet: jstl: jar: 1.2.0, javax.transaction: jta: jar: 1.1.0: Error al encontrar javax.servlet: servlet-api: jar: 2.5.0 en repository.springsource.com/maven/bundles/release se almacenó en caché en el repositorio local, la resolución no se volverá a intentar hasta el intervalo de actualización de <cutted> ....
bertie
@Albert Kam. Respuesta actualizada para incluir referencias al repositorio central de Maven para los artefactos faltantes
Raghuram
prefijo com.springsource significa que los artefactos son procedentes de repositorio empresarial primavera
eis
5

Descargue el jar manualmente y luego ejecute el comando desde la carpeta donde se guarda el jar:

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

El jar file, jar_file_name, group_id, artifact_idy version_noestán disponibles en la página repositorio maven.

Cjo
fuente
4

He tenido un problema similar y lo solucioné agregando los siguientes repositorios en mi 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
fuente
4
mvn clean install -U

Resuelto mi problema Como los repositorios se almacenaron en caché, necesitaba forzarlo para obtener la última versión.

Burak Kaan Bilgehan
fuente
1

Tengo un mensaje similar y mi problema eran algunas preferencias de proxy en mi settings.xml. Así que los desactivé y todo funciona bien.

kdoteu
fuente
1

Este tipo de problemas son causados ​​por dos razones:

  1. el hechizo de una dependencia está mal
  2. la configuración de la configuración de mvn (es decir, ~ / .m2 / settings.xml) es incorrecta

Si se pueden descargar la mayoría de las dependencias, entonces la razón 1 puede ser el error más probable. Por el contrario, si la mayoría de las dependencias tienen el problema, entonces debería echar un vistazo a settings.xml .

Bueno, he tratado de solucionar mi problema toda la tarde, y finalmente lo conseguí. Mi problema ocurre en settings.xml, no la pérdida o la ortografía incorrecta de settings.xml , sino la pérdida de activeProfiles .

Será
fuente
0

Tuve este problema En mi caso, fue causado por IntelliJ Idea jugando con algunos de los archivos pom.xml (¡lo que parece disfrutar haciendo!). ¡Acabo de volver a la copia original y las cosas volvieron a funcionar!

JonnyRaa
fuente
0

También tuve este problema, resultó que fue debido a que NetBeans agregó algo a mi archivo pom.xml. Verifique que no se haya agregado nada desde implementaciones exitosas anteriores.

Eduardo Dennis
fuente
0

Mi proyecto EAR tenía 2 módulos * .ear y * .war y obtuve este error de dependencia en el *.warproyecto al intentarlo mvn eclipse:eclipse. Lo resolvió solucionando el problema de codificación utf-8 en el *.warproyecto. mvn -Xu -eopciones no fueron de ayuda aquí.

Barun
fuente
0

Resulta que sucedió debido al firewall en mi computadora. Apagarlo funcionó para mí.

Duc Thanh
fuente
1
Si bien desactivar el firewall en su computadora podría funcionar, dependiendo de la configuración de su red, recomendaría buscar una solución más segura, por ejemplo, agregando una excepción para el proceso de maven o maven central ... Suena como una configuración de firewall muy estricta o mal configurada para yo aunque
Capricornio
@Capricornio, no es lo mejor, pero para mí probé todas las soluciones recomendadas y funciona bien en esto. Si tienes alguna solución mejor, por favor dime, gracias !!! editado: mencionaste "agregar una excepción para el proceso de maven o maven central", realmente no lo entiendo, ¿puedes especificar esto ...
Duc Thanh
0

Me he encontrado con tal problema. La causa raíz es la carpeta .m2. Debes asegurarte de que todo lo que intentas acceder esté presente en tu carpeta .m2 (este es tu repositorio local). Si las cosas están ahí, entonces eres bueno. Esto generalmente está presente dentro de la carpeta de usuarios en su sistema (ya sea mac / linux o incluso windows)

Akash Verma
fuente