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?

Gremash
quelle
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

SuperAndrew
quelle
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
Michal Kordas
quelle
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.

Guildenstern70
quelle
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 .

Raniz
quelle
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.

Yar
quelle
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.

hippoLogic
quelle
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'
Gayan Weerakutti
quelle