Der beste Weg, um Gradi-Unterstützung zu IntelliJ Project hinzuzufügen


168

Ich habe mich viel umgesehen und nicht die beste Lösung gefunden, um ein vorhandenes IntelliJ-Projekt in Gradle zu konvertieren. Ich arbeite in einer Teamumgebung und wir teilen derzeit die IPR-Datei, da wir einige Build-Konfigurationen haben, die wir verfolgen. Wir werden die irgendwann zugunsten von Gradle loswerden, aber ich kann die Dinge nicht zu sehr vermasseln, bis die Gradle-Konvertierung abgeschlossen ist.

Außerdem befinden sich unsere Java-Quelldateien standardmäßig im Stammverzeichnis des Verzeichnisses src anstelle von src / main / java.

Gibt es eine Möglichkeit, Gradle zu meinem Projekt hinzuzufügen, die mich nicht dazu bringt, mein IntelliJ-Projekt zu löschen und neu zu erstellen, und nicht alle anderen vermasselt, wenn sie einen Git-Pull ausführen?


2
Um die Frage Ihres Quellverzeichnisses zu beantworten, müssen Sie das Standardquellverzeichnis mit sourceSets überschreiben . Sehen Sie, wie wir dies im MongoDB Java-Treiber gemacht haben: github.com/mongodb/mongo-java-driver/blob/…
Trisha

Antworten:


207

Hinzufügen:

build.gradle 

in Ihrem Stammprojektordner und verwenden Sie das Plugin zum Beispiel:

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

und mit diesem Feuer von der Kommandozeile:

gradle cleanIdea 

und danach:

gradle idea

Danach sollte alles funktionieren


7
Beim Versuch dieser Lösung ist jemand auf den Fehler "Modul 'xx' wird nicht von gradle gesichert? Wenn ja, wie wurde er behoben
Marquis Blount

Vielen Dank, das hat mich verrückt gemacht und ich konnte nicht herausfinden, wie IntelliJ die Projektabhängigkeiten aktualisieren kann, nachdem ich sie zu build.gradle hinzugefügt habe.
Amala

Gradle-Idee (das hängt von ideaProject, ideaModule, ideaWorkspace ab) hat bei mir nicht funktioniert, da ideaModule immer wieder fehlgeschlagen ist. Stattdessen hat die Aufgabe gradle ideaProject einwandfrei funktioniert und das Projekt ist jetzt Gradle-fähig.
Paranza

Okay, es gibt ein Problem mit diesem Ansatz. Sie erhalten den Fehler "Abhängigkeiten können nicht auf groovy.lang.closure angewendet werden". Schauen Sie sich stattdessen diese Lösung an: stackoverflow.com/a/17168175/2517730
Yar

1
Dies ist etwas veraltet, da das Ideen-Gradle-Plugin immer noch auf das dateibasierte Ideenprojekt zurückgreift, während das ordnerbasierte Projekt Standard und viel praktischer ist
Xerus

74

Es ist nicht erforderlich, .imlDateien zu entfernen . Folge dies:

  • Schließen Sie das Projekt
  • File -> Open... und wählen Sie Ihre neu erstellte build.gradle
  • IntelliJ wird Sie fragen, ob Sie:
    • Open Existing Project
    • Delete Existing Project and Import
  • Wählen Sie die zweite Option und Sie sind fertig

Wie kann ich das Problem beheben, dass sich das neue Projekt in einem anderen Ordner befinden muss?
Barracuda317

Fügt dies die JARs aus Ihrer Projektstruktur hinzu? Bibliotheken als Abhängigkeiten und erstellen eine EAR (mit dem Plugin) wie in Projektstruktur | definiert Artefakte?
NotiFY

@NOTiFY Ich bezweifle, dass es tut. Dies entspricht dem Auschecken eines Projekts von Grund auf.
Michal Kordas

@Michal Kordas Ich habe alle Abhängigkeiten von Hand hinzugefügt, nicht annähernd die erwartete Zeit in Anspruch genommen und jetzt die Erstellung von WAR, JAR & EAR hinzugefügt. Es gibt eine Funktionsanforderung dafür bei JetBrains youtrack.jetbrains.com/issue/IDEABKL-6990
NOTiFY

46

Ein anderer Weg, einfacher.

Fügen Sie Ihre

build.gradle

Datei im Stammverzeichnis Ihres Projekts. Schließen Sie das Projekt. Entfernen Sie die * .iml-Datei manuell. Wählen Sie dann "Projekt importieren ...", navigieren Sie zu Ihrem Projektverzeichnis, wählen Sie die Datei build.gradle aus und klicken Sie auf OK.


21

In IntelliJ 2017.2.4 habe ich das Projekt gerade geschlossen und erneut geöffnet. In einem Dialogfeld wurde ich gefragt, ob ich eine Verknüpfung herstellen möchte build.gradle herstellen wodurch der Importdialog für Gradle-Projekte geöffnet wurde.

Sie müssen keine Dateien löschen oder das Ideen- Plugin zu build.gradle hinzufügen .


2
Kann bestätigen, dass dies gut funktioniert. Führen Sie einfach gradle init im Projektstamm aus, und beim nächsten Öffnen des Projekts wird der Dialog angezeigt.
Alex H.

16

Wenn Sie bereits ein MavenProjekt haben, müssen Sie als zukünftige Referenz nur ein Projekt gradle initin Ihrem Projektverzeichnis ausführen, das build.gradleandere Abhängigkeiten generiert, und dann ein Projekt gradle buildim selben Verzeichnis ausführen.


2
Von Interesse: Erstellen neuer Gradle-Builds - Hinweise: gradle initKann verschiedene Arten von Projekten generieren und weiß sogar, wie einfache pom.xmlDateien in Gradle übersetzt werden.
Guy Coder

7

Ich verwende Version 12 von IntelliJ.

Ich habe ein ähnliches Problem gelöst, indem ich ein völlig neues Projekt erstellt und "Auschecken aus der Versionskontrolle". Das spätere Zusammenführen der beiden Projekte war ziemlich einfach.


1
  1. Fügen build.gradleSie im Stammverzeichnis Ihres Projekts hinzu.

  2. Dann einfach File->Invalidate Caches / Restart

Hier ist ein grundlegendes build.gradle für Java-Projekte:

plugins {
    id 'java'
}

sourceCompatibility = '1.8'
targetCompatibility = '1.8'
version = '1.2.1'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.