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.