Il modo migliore per aggiungere il supporto Gradle al progetto IntelliJ


168

Mi sono guardato un po 'in giro e non ho trovato la soluzione migliore per convertire un progetto IntelliJ esistente in Gradle. Lavoro in un ambiente di squadra e attualmente condividiamo il file .ipr poiché abbiamo alcune configurazioni di build che seguiamo. Alla fine ci sbarazzeremo di quelli a favore di Gradle ma non posso rovinare troppo le cose fino a quando la conversione di Gradle non sarà completata.

Inoltre, i nostri file sorgente Java si trovano nella directory principale della directory src anziché in src / main / java come standard.

C'è un modo in cui posso aggiungere Gradle al mio progetto che non mi farà cancellare e ricreare il mio progetto IntelliJ e non rovinerà tutti gli altri quando fanno un pull di Git?


2
Per rispondere alla domanda della directory di origine, è necessario sostituire la directory di origine predefinita con sourceSet . Guarda come abbiamo fatto nel driver Java MongoDB: github.com/mongodb/mongo-java-driver/blob/…
— Trisha

Risposte:


208

Inserisci:

build.gradle 

nella cartella del progetto principale e utilizzare il plug-in ad esempio:

apply plugin: 'idea'
//and standard one
apply plugin: 'java'

e con questo fuoco dalla riga di comando:

gradle cleanIdea 

dopodiché:

gradle idea

Dopodiché tutto dovrebbe funzionare


7
quando tentando questa soluzione qualcuno si è imbattuto nell'errore "Il modulo 'xx' non è supportato da Gradle? In tal caso, come è stato risolto
— Marchese Blount,

Grazie, questo mi stava facendo impazzire e non sono riuscito a capire come far aggiornare IntelliJ alle dipendenze dei progetti dopo averlo aggiunto a build.gradle.
— Amala,

l'idea gradle (che dipende da ideaProject, ideaModule, ideaWorkspace) non ha funzionato per me poiché ideaModule ha continuato a fallire. Invece, l'idea gradle di taskProject ha funzionato bene e il progetto è ora abilitato per Gradle.
— paranza

Bene, c'è un problema con questo approccio. Verrà visualizzato l'errore "Le dipendenze non possono essere applicate a groovy.lang.closure". Dai un'occhiata invece a questa soluzione: stackoverflow.com/a/17168175/2517730
— Yar

1
Questo è in qualche modo obsoleto, poiché il plug-in Gradle ricorre ancora al progetto di idea basato su file, mentre il progetto basato su cartelle è standard e molto più utile
— Xerus,

74

Non è necessario rimuovere alcun .imlfile. Segui questo:

  • chiudi il progetto
  • File -> Open... e scegli il tuo nuovo creato build.gradle
  • IntelliJ ti chiederà se vuoi:
    • Open Existing Project
    • Delete Existing Project and Import
  • Scegli la seconda opzione e il gioco è fatto

Come posso risolvere il problema, che il nuovo progetto deve trovarsi in un'altra cartella?
— barracuda317,

Questo aggiunge i JAR dalla struttura del progetto | Librerie come dipendenze e creano una EAR (usando il plugin) come definito nella Struttura del progetto | Artefatti?
— NOTiFY,

@NOTiFY Ne dubito. È equivalente a controllare il progetto da zero.
— Michal Kordas,

@Michal Kordas Ho aggiunto manualmente tutte le dipendenze, non ho impiegato nulla del tempo che mi aspettavo e ora aggiungo la creazione di WAR, JAR & EAR. C'è una richiesta di funzionalità per questo su JetBrains youtrack.jetbrains.com/issue/IDEABKL-6990
— NOTiFY

46

Un altro modo, più semplice.

Aggiungi il tuo

build.gradle

file alla radice del progetto. Chiudi il progetto. Rimuovere manualmente il file * .iml. Quindi scegli "Importa progetto ...", vai alla directory del tuo progetto, seleziona il file build.gradle e fai clic su OK.


21

In IntelliJ 2017.2.4 ho appena chiuso il progetto e riaperto e ho ricevuto una finestra di dialogo che mi chiedeva se volevo collegarmi con build.gradle che ha aperto la finestra di importazione per i progetti Gradle.

Non è necessario eliminare alcun file o aggiungere il plug-in idea a build.gradle .


2
Posso confermare che funziona bene. Basta eseguire gradle init nella radice del progetto, quindi la finestra di dialogo verrà visualizzata alla successiva apertura del progetto.
— Alex H.

16

Proprio come riferimento futuro, se hai già un Mavenprogetto tutto ciò che devi fare è fare un gradle initnella directory del tuo progetto che genererà build.gradlee altre dipendenze, quindi esegui un gradle buildnella stessa directory.


2
Di interesse: creazione di nuove build Gradle - Note: gradle initpuò generare diversi tipi di progetti e sa anche come tradurre semplici pom.xmlfile in Gradle.
— Guy Coder,

7

Sto usando la versione 12 di IntelliJ.

Ho risolto un problema simile creando un progetto completamente nuovo e "Estrarre dal controllo versione" Unire i due progetti in seguito è stato abbastanza facile.


1
  1. Aggiungi build.gradlenella directory principale del tuo progetto.

  2. Quindi solo File->Invalidate Caches / Restart

Ecco un build.gradle di base per i progetti Java:

plugins {
    id 'java'
}

sourceCompatibility = '1.8'
targetCompatibility = '1.8'
version = '1.2.1'
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.