Importar dependencias de Maven en IntelliJ IDEA

208

Tengo una pequeña pregunta sobre IntelliJ IDEA 11. Acabo de importar un proyecto de Subversion, es un proyecto Maven. Pero tengo un problema en las dependencias de la biblioteca maven, por lo que no puedo incluir todas las dependencias maven automáticamente: IDEA muestra errores de dependencia solo cuando abro esa clase / Eso es lo que obtengo aquí:

ingrese la descripción de la imagen aquí

Entonces, quiero que todas las dependencias se agreguen automáticamente, ¿es posible o tengo que revisar todos los archivos de clase para identificar y agregar dependencias de Maven?

ACTUALIZACIÓN: Después de hacer algunas modificaciones, encontré cómo resolver mi problema de alguna manera. Eso fue lo que hice: ingrese la descripción de la imagen aquí

pero creo que lógicamente no incluirá ni verificará nuevas dependencias más adelante. ¡¿Hay alguna área de configuración para esto en intelliJ: dependencias de exportación automática a classpath?!

Zaur Guliyev
fuente
9
Descarga todas las dependencias pero no parece agregarlas todas a classpath ...
Zaur Guliyev
3
y otro problema es que intelliJ me muestra errores subrayados en rojo solo cuando abro ese archivo java ...
Zaur Guliyev
44
Una instancia en la que obtiene esta línea roja es si tiene una dependencia SNAPSHOT con un clasificador, donde existe una versión más nueva de la dependencia sin el clasificador. Esto es perfectamente legal en Maven, pero IntelliJ se confunde al tratar de encontrar la ruta al archivo físico en su repositorio local de Maven.
RCross
44
FYI esto todavía puede suceder en 15.0.2. Me acaba de pasar. Tuve que volar mi archivo .iml y mi carpeta .idea y volver a importar. Increíblemente frustrante b / c pasé 2 horas luchando contra él, y finalmente perdí todas mis configuraciones de ejecución cuidadosamente diseñadas.
Kevin Pauli
3
@KevinPauli no es necesario eliminar los archivos de proyecto IDEA para eso, simplemente puede "Reimportar todos los proyectos de Maven" en la pestaña "Proyectos de Maven" para la reimportación manual.
Zaur Guliyev

Respuestas:

282

IntelliJ debe descargar y agregar todas sus dependencias al classpath del proyecto automáticamente siempre que su POM sea compatible y todas las dependencias estén disponibles.

Al importar proyectos de Maven en IntelliJ, generalmente aparece un cuadro de información que le pregunta si desea configurar la importación automática para proyectos de Maven. Eso significa que si realiza algún cambio en su POM, esos cambios se cargarán automáticamente.

Puede habilitar dicha función yendo a Archivo> Configuración> Maven> Importar, hay una casilla de verificación que dice "Importar proyectos Maven automáticamente".

Si eso no ayuda, sugeriría hacer una limpieza completa y comenzar de nuevo:

  • Cierre la ventana de su proyecto (e IntelliJ) y elimine todos los *.imlarchivos y todas las .ideacarpetas (debe haber una por módulo)
  • Ejecutar mvn clean installdesde la línea de comando
  • Vuelva a importar el proyecto en IntelliJ y preste atención cuando le solicite que habilite la importación automática

Actualización IntelliJ 2016 :

La configuración Importar proyectos de Maven automáticamente se ha movido a Generar, Ejecutar, Implementar> Herramientas de compilación> Maven> Importar en sus preferencias de IntelliJ.

Alonso Dominguez
fuente
¿Entonces su solución fue marcar las dependencias como exportadas? ¡eso es raro! Uso mucho IntelliJ y Maven y ninguno de mis proyectos (algunos de ellos son multiproyectos) tiene habilitada la función de exportación ... ¿es Community Edition o Ultimate?
Alonso Dominguez
1
Es una edición definitiva, pero el proyecto que importé se creó en Eclipse, por lo que .classpath se habilitó allí, pero IntelliJ usa .iml, por lo que creo que es lógico incluir estas bibliotecas por primera vez si este proyecto no tenía .iml archivo antes ..?!
Zaur Guliyev
1
oh, ok, ¿trataste de importarlo como un proyecto Maven en lugar de uno Eclipse? Estoy acostumbrado a no registrar archivos relacionados con IDE en mis repositorios de origen cuando trabajo con proyectos Maven: si es un proyecto Maven, entonces Maven gobierna
Alonso Dominguez
2
Puede habilitar la importación automática en preferencias / configuración. Abra preferencias / configuración y busque "Importar proyectos maven automáticamente". está en Build, Execution, Deployment> Build Tools> Maven> Importing
Seyed Jalal Hosseini
2
@JustinBlank no está sorprendido por eso, dado que esta es una respuesta de 2012. La configuración todavía está allí, simplemente se han trasladado a otro lugar (la respuesta se ha actualizado).
Alonso Dominguez
66

Arreglo antes de IntelliJ 14

Archivo [menú] -> Configuración -> maven -> importar y desmarcar "usar maven3 para importar proyecto"

ref: http://youtrack.jetbrains.com/issue/IDEA-98425 (que también puede tener algunas otras ideas)

Fix IntelliJ 15+

Me encontré con esto nuevamente, con IntelliJ 15 esta vez, que ya no tiene la opción "usar maven3 para importar". La causa fue que a veces IntelliJ "no analiza correctamente las dependencias de Maven" y, si no puede analizar correctamente una de ellas, aparentemente las abandona a todas . Puede saber si este es el caso abriendo la ventana de herramientas de proyectos maven (menú Ver -> Ventanas de herramientas -> Proyectos Maven). Luego expanda uno de sus proyectos maven y sus dependencias. Si todas las dependencias están subrayadas en rojo, "Houston, tenemos un problema". ingrese la descripción de la imagen aquí

En realidad, puede ver la falla real al pasar el mouse sobre el nombre del proyecto en sí.

ingrese la descripción de la imagen aquí

En mi caso, decía "Problemas: no hay versiones disponibles para XXX" o "No se pudo leer el descriptor del artefacto org.xy.z" ref: https://youtrack.jetbrains.com/issue/IDEA-128846 y https: // youtrack.jetbrains.com/issue/IDEA-152555

Parece que en este caso estaba tratando con un jar que no tenía un archivo pom asociado (en nuestro repositorio maven nexus y también en mi repositorio local). Si este también es su problema, "evite el problema: si no necesita usar clases de ese jar en su propio código (por ejemplo, solo una dependencia transitiva de Maven), puede salirse con la suya comentando desde el pom (temporalmente), vuelva a cargar el proyecto Maven y luego descomente. De alguna manera, después de ese punto, IntelliJ "recuerda" sus antiguas dependencias de trabajo. Agregar una exclusión transitiva maven temporalmente también podría hacerlo, si se encuentra con ella desde una cadena de dependencias transitiva. "

Otra cosa que podría ayudar es usar una "versión más nueva" de maven que la 3.0.5 incluida. Para configurarlo para usar esto como predeterminado, cierre todas sus ventanas intellij, luego abra las preferencias -> compilación, ejecución e implementación -> herramientas de compilación -> maven, y cambie el directorio de inicio de maven, debería decir "Por defecto proyecto "en la parte superior cuando ajusta esto, aunque también puede ajustarlo para un proyecto en particular, siempre y cuando" vuelva a importar "después de ajustarlo.

Borrar cachés

Eliminar las carpetas de caché de intellij (windows: HOMEPATH /. {IntellijIdea, IdeaC} XXX linux ~ / .IdeaIC15) y / o desinstalar y reinstalar IntelliJ. Esto también se puede hacer yendo a Archivo [menú] -> Invalidate Caches / Restart.... Haga clic invalidate and restart. Esto reindexará todo su proyecto y resolverá muchos problemas difíciles de rastrear con IntelliJ.

rogerdpack
fuente
2
Por extraño que parezca, casi cualquier otra publicación aconseja marcar la opción "Usar Maven3 para importar proyecto" para resolver este problema, mientras que al desmarcarlo resolvió el problema para mí. ¿Por qué? No lo sé. ¡Gracias!
Janhink
3
En v14 ultimate, elegí un experto externo y todo volvió a funcionar.
AlikElzin-kilaka
@ AlikElzin-kilaka Cambiar el directorio de inicio de maven a una casa externa de maven ayuda mucho. Después de actualizar IDEA a v14 ultimate, no pude iniciar mi proyecto en IDEA debido a "No se encontró el complemento tomcat6", pero puedo iniciar el proyecto usando el comando mvn, y cambiar el directorio de inicio de maven a externo lo resolvió
JerseyGood
En IntelliJ 2016.2.1, deshabilitar la importación automática cambiando Maven home directorya la versión que usa nuestra pila (3.3.9) solucionó el problema para mí.
Wheeler
1
Cambio de la maven home directoryde Bundle (Maven 3)la ruta donde está instalado mi experto .../maven/3.6.1/libexectrabajó para mí
Marcelo Xavier
37

Al importar el proyecto, seleccione en pom.xmllugar del directorio del proyecto. Deberia de funcionar.

chichi
fuente
1
a veces haga clic en la opción "Reimportar todos los proyectos de Maven" en la ventana de Proyectos de Maven
vikramvi
1
Tal vez este es el más elegante, limpio, solución (y es poco incómoda intellij no le ayuda en adivinar eso)
matanster
Trabajando para mí también, con IntelliJ Community Edition 2019.3.4. Gracias por una solución tan fácil. :)
asimetríaFan
22

Intente volver a importar el proyecto desde el panel Proyectos de Maven en IntelliJ IDEA. Debe descargar y configurar todas las dependencias definidas en su pom.xmlautomáticamente.

Si la descarga no funciona desde IDEA por alguna razón, intente mvn installdesde la línea de comandos y vea si se pueden obtener las dependencias.

Por supuesto, todas las dependencias requeridas y los repositorios personalizados deben definirse directamente en el pom.xmlarchivo.

CrazyCoder
fuente
14

Para IntelliJ 2016-2.4 (y creo que otras versiones nuevas):

Ver> Windows de herramientas> Proyectos Maven

En la barra de herramientas recientemente revelada, seleccione la configuración de Maven (icono de un conjunto de herramientas).

Cuando se abra esta pantalla, expanda el menú Maven y haga clic en 'Importar'

Aquí, haga clic en "Importar proyectos Maven automáticamente". También asegúrese de que la opción 'JDK for Importer' coincida con la versión JDK que quiere usar.

Haga clic en Aceptar. Ahora vaya a la dependencia roja en su pom.xml, seleccione la bombilla roja y haga clic en 'Actualizar índices Maven'.

Paul Back
fuente
1
elegir el JDK adecuado para el importador me ayudó. También tuve que ejecutar mvn idea: idea limpia: idea para cerrar los últimos números.
Vincent F
9

Lo que me ayudó

Navegación: Configuración | Construcción, Ejecución, Despliegue | Maven

Especifique el "directorio de inicio de Maven": el lugar donde instaló el maven

Anatolii Stepaniuk
fuente
7

Si ciertos módulos de Maven no se están compilando, compruebe si su pom.xml está en la lista de "archivos ignorados". En IntelliJ goto

preferencias -> configuración del proyecto -> maven -> archivos ignorados

y verifique si se ignora el pom.xml relacionado.

Tú haces
fuente
5

Abra IntelliJ Idea, vaya a Archivo> Otras configuraciones> Configuración predeterminada ...> Maven (Preferencias)> Importar o | Preferences > Maven > Importing

ingrese la descripción de la imagen aquí

Haga clic en Habilitar importación automática en la consola.

ingrese la descripción de la imagen aquí

Prashanth Sams
fuente
4

Cuando crea un nuevo proyecto simplemente necesita elegir la opción:

...
Importar proyecto desde modelo externo
Crear estructura de proyecto IDEA sobre modelo externo existente (Eclipse, Maven ...)
...

Lo encontrarás bastante directo desde allí.
Y en su caso, puede cerrar su proyecto y simplemente crear uno nuevo. Elija el directorio de su proyecto, que lo anulará, convirtiéndolo en un proyecto Maven.

Markus Coetzee
fuente
Convenido. Es casi seguro que el OP simplemente importó erróneamente el proyecto.
kaqqao
4

Importar dependencias de Maven puede no funcionar si importa la misma ruta varias veces. Esto puede suceder automáticamente después de importar un proyecto Maven existente. No puedo entender por qué sucede esto, así que me inclino a pensar que es un error.

Por ejemplo, si mi proyecto es

hibernate
  src/main
  src/test

Las tres rutas pueden importarse como nodos superiores:

hibernate
src/main
src/test

Si tal es el caso, las dependencias parecen ser correctas, pero no se utilizarán hasta que elimine las rutas superfluas (en este caso, src/mainy src/test). Una vez que haga esto, actualice y haga clic en Compilar> Reconstruir proyecto. IDEA recogerá las dependencias.

Un síntoma de este problema es que IDEA le advierte de una ruta duplicada cuando verifica manualmente una biblioteca (segunda captura de pantalla en la pregunta).

Hay varias formas de volver a leer las dependencias en caso de que lo necesite. Si va a la pestaña "Proyectos Maven", hay un icono "Reimportar todos los proyectos Maven" en la parte superior izquierda de la pestaña. Si sospecha que IDEA se confundió, puede hacer clic en Archivo> Invalidar cachés.

Jano
fuente
3

Vaya a la estructura de su proyecto, en Configuración del proyecto, Módulos, seleccione la tabla de dependencias. Para cada dependencia, cambie el alcance de 'Prueba' a 'Compilar'.

Brote
fuente
3

Reimportar el proyecto. Si instala el complemento maven, puede usar esto.

Haga clic derecho en el proyecto -> Maven -> Reimportar

Damith Ganegoda
fuente
3

Primero verifique la ruta especificada para el archivo de configuración del usuario: en Configuración -> Compilación, Ejecución, Desarrollo -> Herramientas de compilación -> Maven . El campo debe tener la ruta de la settings.xml de su maven. Además, settings.xml debe tener la ruta correcta del repositorio remoto.

amol13
fuente
Esto funcionó para mí, en el archivo settings.xml, la entrada para la etiqueta <url> anidada en la etiqueta <mirror> estaba desactualizada. Me reuní con mis colegas para obtener el valor de entrada actualizado. Hice el cambio a ~ / .m2 / settings.xml, cerré intelliJ y lo comencé de nuevo. Al reiniciar, sin hacer nada más, los subrayados rojos que aparecían en la vista maven habían desaparecido. Curiosamente, la mayoría de las dependencias raíz que se resaltaron siempre estuvieron presentes en la entrada "Bibliotecas externas" de la vista Proyecto, tanto antes como después de realizar esta corrección.
Steve T
3

Tuve un problema similar, en mi caso estoy usando una costumbre settings.xmlque no fue seleccionada de IntelliJ.

Solución:
File > Settings > Build, Execution, Deployment > Maven: User settings file (elija aquí mi configuración personalizada.xml).

petre
fuente
3

Tuve el mismo problema y probé todas las respuestas mencionadas aquí, ninguna funcionó.

La solución simple es ir a la carpeta del proyecto y eliminar todos los archivos .idea e .iml y reiniciar el IntelliJ ide. Funciona. No es necesario hacer nada con la configuración.

NP Yashaswi
fuente
2

Me encontré con el problema de que algunas subdependencias no podían resolverse en IntelliJ 2016.3.X. Esto podría solucionarse cambiando Maven home directoryen Configuración> Compilación, Ejecución, Implementación> Herramientas de compilación> Maven de Bundled (Maven 3)a /usr/share/maven.

Después de eso, todas las subdependencias se resolvieron como en versiones anteriores de IntelliJ.

Johannes Stadler
fuente
2

Maven - Reimport no funcionó para mí. Tengo el proyecto Spring en STS (Eclipse) y mi solución es importar el proyecto a IDEA de la siguiente manera:

1) Archivo - Nuevo - Proyecto de fuentes existentes ... - seleccione el directorio - elija Eclipse.
2) Establezca la importación automática de Maven en verdadero en la configuración.
3) Luego haga clic derecho en pom.xml y elija Agregar como proyecto Maven.

Después de esto ha importado todo.

Svitlana Onish
fuente
2

Tuve el problema similar con mi macbook, solo hice un pequeño cambio pom.xmly comenzó a descargar todas las dependencias:

Las dependencias anteriores se escribieron de la siguiente manera para mi máquina Windows:

<dependencies>
 <dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4</version>
</dependency>
</dependencies>

Me acaba de quitar los <dependencies>y </dependencies>las etiquetas y comenzó a descargar todas las dependencias:

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4</version>
</dependency>

No estoy seguro de que funcione para usted o no ... pero funcionó bien para mí.

Gracias

Amit Joshi
fuente
1

Si en la esquina inferior derecha dice "2 procesos en ejecución ..." o similar, es posible que deba esperar a que termine, ya que puede llevar tiempo descargar todos los archivos jar.

djechlin
fuente
1

Resolví este problema actualizando mi archivo settings.xml con la configuración correcta del espejo, parece que intellij intentará descargar metadatos del repositorio cada vez que se importe el módulo maven.

Abel Zhan
fuente
1

Secuestrando un poco para agregar lo que terminó funcionando para mí:

Vaya a la Maven Projectsbarra lateral en el borde derecho del IDE y verifique que sus dependencias se enumeren correctamente debajo de su módulo allí. Suponiendo que lo sean, solo pídale a IDEA que vuelva a importar (el primer botón en la parte superior parece dos flechas azules que forman un círculo en sentido antihorario).

Una vez que hice eso, y dejé que IDEA volviera a cargar el proyecto por mí, todas mis dependencias se entendieron mágicamente.

Para referencia: esto fue con IDEA 13.1.2

Sunspar
fuente
1

Me enfrenté al mismo problema e intenté todo lo sugerido que no resolvió el problema, estaba usando Intellij versión 13.1.3

Finalmente, después de pasar más de un par de horas tratando de solucionarlo, decidí probar una versión actualizada y abrí el proyecto en la versión 14.1.4 que finalmente resolvió el problema. Creo que esto es un error probable en la versión anterior.

¡Espero que esto ayude!

sjaiswal
fuente
1

Pude resolverlo eliminando módulos innecesarios de Configuración del proyecto -> Lista de módulos .

ingrese la descripción de la imagen aquí

Resulta que estos módulos adicionales fueron creados automáticamente por IntelliJ IDEA cuando creé el proyecto IntelliJ importando desde la carpeta del proyecto (en lugar de abrir pom.xml). Luego, después de declarar el proyecto como proyecto Maven, se crearon los módulos adecuados y los módulos existentes estaban en conflicto con ellos. También es posible excluir esos módulos durante la creación del proyecto.

elyor
fuente
1

Lo que funcionó para mí fue eliminar la carpeta .idea del directorio del proyecto y luego volver a importar el proyecto como un proyecto Maven.

Janac Meena
fuente
1

En mi caso, uno de los módulos fue ignorado por alguna razón. Para resolverlo: haga clic con el botón derecho en el módulo problemático y elija "No ignorar proyectos".

ejemplo de proyecto ignorado

KernelMode
fuente
1

En mi caso, la ruta para JAVA utilizada por MAVEN no se configuró como JAVA_HOME como se configuró en la máquina. Por lo tanto, ni siquiera estaba tratando de descargar las dependencias. Pasos que seguí que resolvieron este problema,

  1. Se verificó la ruta JAVA, Configuración >> Construir >> Herramientas de compilación >> Importar >> JDK para importador . Se lo señaló a JAVA_HOME.

  2. mvn clean install -U

    Se utilizó el comando anterior para forzar la descarga de dependencias.

  3. Re importó proyectos Maven

Akanksha Sharma
fuente
0

Si todo lo demás falla, verifique si el archivo jar en su repositorio local .m2 es realmente válido y no está dañado. En mi caso, el archivo no se había descargado completamente.

Markus Barthlen
fuente
0

En maven, las dependencias se incluyeron para mí cuando eliminé la sección xml de dependencyManagement y solo tuve dependencias directamente en la sección del proyecto

caballo de mar
fuente
0

El problema parece ser que a pesar de enumerar sus dependencias en pom.xml, IntelliJ IDEA no reconstruye esas dependencias cuando ejecuta su proyecto.

Lo que funcionó para mí es esto:

Vaya a 'Ejecutar' -> 'Editar configuraciones ...', busque su aplicación, asegúrese de que la sección "Antes del lanzamiento:" esté expandida, haga clic en el signo más verde y seleccione "Crear proyecto".

ingrese la descripción de la imagen aquí

Mike Nakis
fuente
0

pude arreglar el mío agregando estas líneas de código después de la etiqueta de compilación en el archivo pom.xml, lo comparé desde mi proyecto en ejecución y descubrí que esa era la diferencia, ahora estoy bien.

<repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
ChibuezePaul ISoft
fuente