Importa dipendenze Maven in IntelliJ IDEA


208

Ho una piccola domanda su IntelliJ IDEA 11. Ho appena importato un progetto da sovversione - è un progetto maven. Ma ho un problema con le dipendenze della libreria Maven, quindi non posso includere automaticamente tutte le dipendenze Maven - IDEA mostra errori di dipendenza solo quando apro quella classe / Ecco cosa ottengo qui:

inserisci qui la descrizione dell'immagine

Quindi voglio che tutte le dipendenze vengano aggiunte automaticamente - è possibile o devo passare attraverso tutti i file di classe per identificare e aggiungere dipendenze maven ?!

AGGIORNAMENTO: Dopo aver apportato alcune modifiche, ho scoperto come risolvere il mio problema in qualche modo. Questo è quello che ho fatto: inserisci qui la descrizione dell'immagine

ma penso che logicamente non includerà e controllerà in anticipo nuove dipendenze?! ... C'è qualche area di impostazione per questo in IntelliJ - Esportazione automatica delle dipendenze nel percorso di classe ?!


9
Scarica tutte le dipendenze ma non sembra aggiungerle tutte al percorso di classe ...
Zaur Guliyev

3
e un altro problema è che intelliJ mi mostra errori sottolineati in rosso solo quando apro quel file java ...
Zaur Guliyev

4
Un'istanza in cui si ottiene questa linea rossa è se si dispone di una dipendenza SNAPSHOT con un classificatore, in cui esiste una versione più recente della dipendenza senza il classificatore. Questo è perfettamente legale in Maven, ma IntelliJ viene confuso nel tentativo di elaborare il percorso del file fisico nel repository Maven locale.
RCross,

4
Cordiali saluti, questo può ancora accadere in 15.0.2. Mi è appena successo. Ho dovuto spazzare via il mio file .iml e la cartella .idea e reimportare. Incredibilmente frustrante b / c ho trascorso 2 ore a combatterlo, e alla fine ho perso tutte le mie configurazioni di corsa accuratamente realizzate.
Kevin Pauli,

3
@KevinPauli non è necessario rimuovere i file di progetto IDEA per questo, potresti semplicemente "Reimportare tutti i progetti Maven" nella scheda "Progetti Maven" per la reimportazione manuale.
Zaur Guliyev,

Risposte:


282

IntelliJ dovrebbe scaricare e aggiungere automaticamente tutte le dipendenze al percorso di classe del progetto, purché il POM sia conforme e tutte le dipendenze siano disponibili.

Quando si importano progetti Maven in IntelliJ, di solito viene visualizzata una finestra informativa che chiede se si desidera configurare l' importazione automatica per i progetti Maven. Ciò significa che se si apportano modifiche al POM, tali modifiche verranno caricate automaticamente.

Puoi abilitare tale funzione andando su File> Impostazioni> Maven> Importazione, c'è una casella che dice "Importa progetti Maven automaticamente".

Se ciò non aiuta, suggerirei di effettuare una pulizia completa e ricominciare:

  • Chiudi la finestra del progetto (e IntelliJ) e rimuovi tutti i *.imlfile e tutte le .ideacartelle (dovrebbe essercene una per modulo)
  • Esegui mvn clean installdalla riga di comando
  • Reimportare il progetto in IntelliJ e prestare attenzione quando viene richiesto di abilitare l'importazione automatica

Aggiornamento IntelliJ 2016 :

L' impostazione Importa progetti Maven è stata spostata automaticamente in Build, Execution, Deployment> Build Tools> Maven> Importing nelle preferenze di IntelliJ.


quindi la tua soluzione è stata quella di contrassegnare le dipendenze come esportate? quello è strano! Uso IntelliJ e Maven molto e nessuno dei miei progetti (alcuni di essi sono multiprogetti) ha la funzione di esportazione abilitata ... è Community Edition o Ultimate?
Alonso Dominguez,

1
È una Ultimate Edition ma il progetto che ho importato è stato costruito su Eclipse - in modo che .classpath sia stato abilitato lì ma IntelliJ usa .iml - Quindi penso che sia logico includere queste librerie per la prima volta se questo progetto non aveva .iml file prima ..?!
Zaur Guliyev,

1
oh, ok - hai provato a importarlo come progetto Maven piuttosto che come progetto Eclipse? Sono abituato a non archiviare i file relativi a IDE nei miei repository di origine quando lavoro con progetti Maven: se si tratta di un progetto Maven, allora regole Maven
Alonso Dominguez,

2
È possibile abilitare l'importazione automatica nelle preferenze / impostazioni. Apri le preferenze / impostazioni e cerca "Importa progetti maven automaticamente". è sotto Build, Execution, Deployment> Build Tools> Maven> Importing
Seyed Jalal Hosseini

2
@JustinBlank non ne è sorpreso, dato che questa è una risposta dal 2012. Le impostazioni sono ancora lì, sono state spostate altrove (la risposta è stata aggiornata).
Alonso Dominguez,

66

Correzione prima di IntelliJ 14

File [menu] -> Impostazioni -> maven -> importazione e deseleziona "usa maven3 per importare il progetto"

ref: http://youtrack.jetbrains.com/issue/IDEA-98425 (che potrebbe anche avere qualche altra idea)

Correggi IntelliJ 15+

Ci siamo imbattuti di nuovo in questo, con IntelliJ 15 questa volta, che non ha più l'opzione "usa maven3 per importare". La causa era che a volte IntelliJ "non analizza correttamente le dipendenze maven" e se non riesce a analizzarne una giusta, a quanto pare rinuncia a tutte . Puoi capire se questo è il caso aprendo la finestra degli strumenti dei progetti maven (menu Visualizza -> Finestre degli strumenti -> Progetti Maven). Quindi espandi uno dei tuoi progetti maven e le sue dipendenze. Se le dipendenze sono tutte sottolineate in rosso, "Houston, abbiamo un problema". inserisci qui la descrizione dell'immagine

Puoi effettivamente vedere il vero fallimento passando il mouse sul nome del progetto stesso.

inserisci qui la descrizione dell'immagine

Nel mio caso diceva "Problemi: nessuna versione disponibile per XXX" o "Impossibile leggere il descrittore per artefatto org.xy.z" ref: https://youtrack.jetbrains.com/issue/IDEA-128846 e https: // youtrack.jetbrains.com/issue/IDEA-152555

Sembra che in questo caso stavo trattando un vaso che non aveva un file pom associato (nel nostro repository maven nexus e anche nel mio repository locale). Se questo è anche il tuo problema ", aggira il problema: se in realtà non hai bisogno di usare le classi da quel vaso nel tuo codice (ad esempio solo una dipendenza da forno transitivo), puoi effettivamente scappare commentandolo dal pom (temporaneamente), ricaricare il progetto maven e poi decommentarlo. In qualche modo dopo IntelliJ "ricorda" le sue vecchie dipendenze di lavoro. L'aggiunta temporanea di un esclusione di Maven potrebbe temporaneamente farlo, se ci si imbatte in una catena transitoria di dipendenze. "

Un'altra cosa che potrebbe aiutare è usare una "versione più recente" di Maven rispetto alla 3.0.5 in bundle. Per impostarlo in modo da utilizzare questo come predefinito, chiudere tutte le finestre di Intellij, quindi aprire le preferenze -> build, esecuzione e distribuzione -> strumenti di costruzione -> maven e modificare la directory home di maven, dovrebbe essere indicato "Per impostazione predefinita progetto "nella parte superiore quando lo aggiusti, anche se puoi modificarlo anche per un particolare progetto, purché" reimporti "dopo averlo modificato.

Cancella cache

Eliminazione delle cartelle della cache di Intellij (Windows: HOMEPATH /. {IntellijIdea, IdeaC} XXX linux ~ / .IdeaIC15) e / o disinstallazione e reinstallazione di IntelliJ stesso. Questo può essere fatto anche andando su File [menu] -> Invalidate Caches / Restart.... Fare clic invalidate and restart. Ciò reindicizzerà l'intero progetto e risolverà molti problemi difficili da rintracciare con IntelliJ.


2
Stranamente quasi ogni altro post consiglia di selezionare l'opzione "Usa Maven3 per importare il progetto" per risolvere questo problema mentre in realtà deselezionandolo risolto il problema per me. Perché? Non lo so. Grazie!
Jan

3
In v14 ultimate, ho scelto un dispositivo esterno e tutto è tornato a funzionare.
AlikElzin-Kilaka

@ AlikElzin-kilaka Cambiare la directory home della maven in home della maven esterna aiuta molto. Dopo aver aggiornato IDEA su v14 ultimate, non ho potuto avviare il mio progetto in IDEA a causa di "Nessun plug-in tomcat6 trovato", ma posso avviare il progetto usando il comando mvn e risolto la directory home di
maven in

In IntelliJ 2016.2.1, la disabilitazione dell'importazione automatica cambiando Maven home directoryalla versione utilizzata dal nostro stack (3.3.9) ha risolto il problema per me.
Wheeler

1
Cambiare il maven home directoryda Bundle (Maven 3)al percorso in cui è installato il mio Maven ha .../maven/3.6.1/libexecfunzionato per me
Marcelo Xavier

37

Durante l'importazione del progetto, selezionare pom.xmlinvece della directory del progetto. Dovrebbe funzionare.


1
a volte fare clic sull'opzione "Reimporta tutti i progetti maven" nella finestra Progetti Maven
vikramvi

1
Forse questa è la soluzione più elegante, pulita, (ed è leggermente imbarazzante intellij non ti aiuta a indovinarlo)
matanster

Lavorando anche per me, con IntelliJ Community Edition 2019.3.4. Grazie per una soluzione così semplice. :)
asimmetriaFan

22

Prova a reimportare il progetto dal pannello Progetti Maven in IntelliJ IDEA. Dovrebbe scaricare e configurare automaticamente tutte le dipendenze definite nel tuo pom.xml.

Se il download non funziona da IDEA per qualche motivo, provare mvn installdalla riga di comando e vedere se è possibile recuperare le dipendenze.

Naturalmente tutte le dipendenze richieste e tutti i repository personalizzati devono essere definiti direttamente nel pom.xmlfile.


14

Per IntelliJ 2016-2.4 (e credo altre versioni nuove):

Visualizza> Finestre degli strumenti> Progetti Maven

Nella barra degli strumenti appena rivelata, seleziona Impostazioni Maven (icona di un set di strumenti).

Quando si apre questa schermata, espandi il menu Maven e fai clic su "Importazione"

Qui, fai clic su "Importa progetti Maven automaticamente". Assicurati inoltre che l'opzione "JDK per importatore" corrisponda alla versione JDK che intendi utilizzare.

Clicca OK. Ora vai alla dipendenza rossa nel tuo pom.xml, seleziona la lampadina rossa e fai clic su "Aggiorna indici Maven".


1
scegliere il giusto JDK per importatore mi ha aiutato. Ho anche dovuto eseguire mvn idea: idea pulita: idea per chiudere gli ultimi numeri.
Vincent F,

9

Cosa mi ha aiutato:

Navigazione: Impostazioni | Build, Execution, Deployment | Esperto di

Specifica "Maven home directory" - il luogo in cui hai installato il Maven


7

Se alcuni moduli maven non vengono compilati, verificare se il loro pom.xml è nell'elenco "file ignorati". In IntelliJ vai

preferenze -> impostazioni del progetto -> maven -> file ignorati

e controlla se il pom.xml correlato viene ignorato.


5

Apri IntelliJ Idea, vai su File> Altre impostazioni> Impostazioni predefinite ...> Maven (Preferenze)> Importazione o | Preferences > Maven > Importing

inserisci qui la descrizione dell'immagine

Fai clic su Abilita importazione automatica nella console.

inserisci qui la descrizione dell'immagine


4

Quando crei un nuovo progetto devi semplicemente scegliere l'opzione:

...
Importa progetto da modello esterno
Crea struttura progetto IDEA su modello esterno esistente (Eclipse, Maven ...)
...

Lo troverai abbastanza semplice da lì.
E nel tuo caso puoi chiudere il tuo progetto e semplicemente crearne uno nuovo. Scegli la directory del tuo progetto, che lo sovrascriverà, rendendolo un progetto Maven.


Concordato. È quasi certo che il PO abbia semplicemente importato erroneamente il progetto.
Kaqqao,

4

L'importazione delle dipendenze Maven potrebbe non funzionare se si importa più volte lo stesso percorso. Ciò può accadere automaticamente dopo l'importazione di un progetto maven esistente. Non riesco a capire perché questo accada, quindi sono propenso a pensare che sia un bug.

Ad esempio, se il mio progetto lo è

hibernate
  src/main
  src/test

i tre percorsi possono essere importati come nodi principali:

hibernate
src/main
src/test

In tal caso, le dipendenze sembrano essere corrette, ma non verranno utilizzate fino a quando non verranno rimossi i percorsi superflui (in questo caso src/maine src/test). Una volta fatto questo, aggiorna e fai clic su Genera> Ricostruisci progetto. IDEA raccoglierà le dipendenze.

Un sintomo di questo problema è che IDEA ti avvisa di un percorso duplicato quando controlli manualmente una libreria (secondo screenshot nella domanda).

Esistono diversi modi per rileggere le dipendenze in caso di necessità. Se vai alla scheda "Progetti Maven", c'è un'icona "Reimporta tutti i progetti Maven" nella parte superiore sinistra della scheda. Se sospetti che IDEA sia diventato confuso, puoi fare clic su File> Cache non valide.


3

Vai nella struttura del tuo progetto, in Impostazioni progetto, Moduli, seleziona la tabella delle dipendenze. Per ogni dipendenza, modificare l'ambito da "Test" a "Compila".


3

Reimportare il progetto. Se installi il plugin maven puoi usarlo.

Fare clic con il tasto destro sul progetto -> Maven -> Reimport


3

Primo percorso di controllo Specificato per il file delle Impostazioni utente: in Impostazioni -> Build, Execution, Development -> Build Tools -> Maven . Il campo dovrebbe contenere il percorso settings.xml del tuo dispositivo. Inoltre settings.xml dovrebbe avere il percorso corretto del repository remoto.


Questo ha funzionato per me, nel file settings.xml, la voce per il tag <url> nidificata nel tag <mirror> era obsoleta. Ho conferito con i miei colleghi per ottenere il valore di iscrizione aggiornato. Ho apportato la modifica a ~ / .m2 / settings.xml, ho chiuso intelliJ e l'ho riavviata. Al riavvio, non facendo altro, i caratteri di sottolineatura rossi che appaiono nella vista della maven erano spariti. Stranamente, la maggior parte delle dipendenze di root evidenziate erano sempre presenti nella voce "Librerie esterne" della vista Progetto, sia prima che dopo aver eseguito questa correzione.
Steve T

3

Ho avuto un problema simile, nel mio caso sto usando un'usanza settings.xmlche non è stata scelta da IntelliJ.

Soluzione:
File > Settings > Build, Execution, Deployment > Maven: User settings file (scegli qui il mio settings.xml personalizzato).


3

Ho avuto lo stesso problema e ho provato tutte le risposte menzionate qui, nessuna ha funzionato.

La soluzione semplice è andare alla cartella del progetto ed eliminare tutti i file .idea e .iml e riavviare l'ide IntelliJ. Funziona. Non c'è bisogno di fare nulla con le impostazioni.


2

Ho riscontrato il problema che alcune sottodipendenze non potevano essere risolte in IntelliJ 2016.3.X. Ciò potrebbe essere risolto modificando Maven home directoryin Impostazioni> Genera, Esecuzione, Distribuzione> Strumenti di costruzione> Maven da Bundled (Maven 3)a /usr/share/maven.

Successivamente tutte le sottodipendenze sono state risolte come nelle precedenti versioni di IntelliJ.


2

Maven - Reimport non ha funzionato per me. Ho un progetto Spring in STS (Eclipse) e la mia soluzione è importare il progetto in IDEA in questo modo:

1) File - Nuovo - Progetto da fonti esistenti ... - Seleziona directory - Scegli Eclipse.
2) Impostare Autoimport Maven su true nelle impostazioni.
3) Quindi fare clic con il tasto destro in pom.xml e selezionare Aggiungi come progetto Maven.

Dopo questo ha importato tutto.


2

Ho avuto il problema simile con il mio macbook, ho appena fatto una piccola modifica pom.xmle ha iniziato a scaricare tutte le dipendenze:

Le dipendenze precedenti sono state scritte come di seguito per il mio computer Windows:

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

Ho appena rimosso le <dependencies>e </dependencies>tag e ha cominciato a scaricare tutte le dipendenze:

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

Non sono sicuro che funzionerà per te o no .. ma ha funzionato bene per me.

Grazie


1

Se nell'angolo in basso a destra dice "2 processi in esecuzione ..." o simili, potrebbe essere necessario attendere che finisca, poiché potrebbe essere necessario del tempo per scaricare tutti i vasetti.


1

Ho risolto questo problema aggiornando il mio file settings.xml con la corretta configurazione del mirror, sembra che intellij tenterà di scaricare i metadati dal repository ogni volta che il modulo maven viene importato.


1

Dirottando un po 'per aggiungere ciò che ha funzionato per me:

Vai nella Maven Projectsbarra laterale sul bordo destro dell'IDE e verifica che le tue dipendenze siano elencate correttamente sotto il tuo modulo lì. Supponendo che lo siano, basta chiedere a IDEA di reimportare (il primo pulsante in alto, sembra due frecce blu che formano un cerchio in senso antiorario).

Una volta che l'ho fatto e ho lasciato che IDEA ricaricasse il progetto per me, tutte le mie dipendenze sono state magicamente comprese.

Per riferimento: questo era con IDEA 13.1.2


1

Ho affrontato lo stesso problema e ho provato tutto ciò che suggeriva che non ha risolto il problema, stavo usando Intellij versione 13.1.3

Alla fine, dopo aver trascorso più di un paio d'ore a tentare di risolverlo, ho deciso di provare una versione aggiornata e ho aperto il progetto nella versione 14.1.4 che alla fine ha risolto il problema. Lo considererei un probabile bug nella versione precedente.

Spero che aiuti!


1

Sono stato in grado di risolverlo rimuovendo i moduli non necessari da Impostazioni progetto -> Elenco moduli .

inserisci qui la descrizione dell'immagine

Si scopre che questi moduli aggiuntivi sono stati creati automaticamente da IntelliJ IDEA quando ho creato il progetto IntelliJ importando dalla cartella del progetto (anziché aprendo pom.xml). Quindi, dopo aver dichiarato il progetto come progetto Maven, sono stati creati i moduli appropriati e i moduli esistenti erano in conflitto con essi. È anche possibile escludere tali moduli durante la creazione del progetto.


1

Eliminare la cartella .idea dalla directory del progetto e quindi reimportare il progetto come progetto Maven è ciò che ha funzionato per me.


1

Nel mio caso, uno dei moduli è stato ignorato per qualche motivo. Per risolvere il problema: fai clic con il pulsante destro del mouse sul modulo problematico e scegli "Unignore Projects".

esempio di progetto unignore


1

Nel mio caso, il percorso per JAVA utilizzato da MAVEN non è stato impostato come JAVA_HOME come configurato sulla macchina. Quindi, non stava nemmeno cercando di scaricare le dipendenze. I passaggi che ho seguito per risolvere questo problema,

  1. Controllato per il percorso JAVA, Impostazioni >> Crea >> Strumenti di costruzione >> Importazione >> JDK per importatore . Lo ha puntato a JAVA_HOME.

  2. mvn clean install -U

    Usato sopra il comando per forzare il download delle dipendenze.

  3. Progetti Maven importati


0

Se tutto il resto fallisce, controlla se il file jar nel tuo repository .m2 locale è effettivamente valido e non danneggiato. Nel mio caso, il file non era stato scaricato completamente.


0

Maven le dipendenze sono state incluse per me quando ho rimosso la sezione XML gestione delle dipendenze e ho avuto dipendenze direttamente nella sezione progetto


0

Il problema sembra essere che, nonostante l'elenco delle dipendenze in pom.xml, IntelliJ IDEA non ricostruisca tali dipendenze quando si esegue il progetto.

Ciò che ha funzionato per me è questo:

Vai su "Esegui" -> "Modifica configurazioni ...", trova l'applicazione, assicurati che la sezione "Prima del lancio:" sia espansa, fai clic sul segno più verde e seleziona "Crea progetto".

inserisci qui la descrizione dell'immagine


0

sono stato in grado di correggere il mio aggiungendo queste righe di codice dopo il tag build nel file pom.xml, l'ho confrontato dal mio progetto in esecuzione e ho scoperto che era la differenza, ora sto bene.

<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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.