Najlepszy sposób na dodanie obsługi Gradle do IntelliJ Project

168

Rozejrzałem się trochę i nie znalazłem najlepszego rozwiązania do konwersji istniejącego projektu IntelliJ na Gradle. Pracuję w środowisku zespołowym i obecnie udostępniamy plik .ipr, ponieważ mamy kilka konfiguracji kompilacji, które śledzimy. W końcu pozbędziemy się zwolenników Gradle, ale nie mogę zbytnio zepsuć sprawy, dopóki konwersja Gradle nie zostanie zakończona.

Ponadto nasze pliki źródłowe Java znajdują się w katalogu głównym katalogu src zamiast standardowo w src / main / java.

Czy istnieje sposób, w jaki mogę dodać Gradle do mojego projektu, który nie zmusi mnie do usunięcia i odtworzenia mojego projektu IntelliJ i nie spieprzy wszystkich innych, gdy wykonują przeciąganie Git?

Gremash
źródło
2
Aby odpowiedzieć na pytanie o katalog źródłowy - musisz nadpisać domyślny katalog źródłowy za pomocą sourceSets . Zobacz, jak to zrobiliśmy w sterowniku Java MongoDB: github.com/mongodb/mongo-java-driver/blob/ ...
Trisha

Odpowiedzi:

207

Dodaj:

build.gradle 

w głównym folderze projektu i użyj wtyczki na przykład:

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

i tym ogniem z linii poleceń:

gradle cleanIdea 

i potem:

gradle idea

Potem wszystko powinno działać

SuperAndrew
źródło
7
Czy przy próbie tego rozwiązania ktoś napotkał błąd „Moduł 'xx' nie jest obsługiwany przez gradle? jeśli tak, to jak go rozwiązano
Marquis Blount
Dzięki temu doprowadzało mnie to do szału i nie mogłem wymyślić, jak sprawić, by IntelliJ odświeżył zależności projektów po dodaniu go do build.gradle.
Amala
Pomysł gradle (który zależy od ideaProject, ideaModule, ideaWorkspace) nie działała, ponieważ idea ideaModule ciągle zawodziła. Zamiast tego zadanie gradle ideaProject działało dobrze i projekt jest teraz obsługiwany przez Gradle.
paranza
W porządku, jest problem z tym podejściem. Pojawi się błąd „Nie można zastosować zależności do groovy.lang.closure”. Zamiast tego sprawdź to rozwiązanie: stackoverflow.com/a/17168175/2517730
Yar,
1
Jest to nieco przestarzałe, ponieważ pomysł wtyczki Gradle nadal odwołuje się do projektu pomysłu opartego na plikach, podczas gdy projekt oparty na folderach jest standardowy i znacznie bardziej poręczny
Xerus
74

Nie ma potrzeby usuwania żadnych .imlplików. Obserwuj to:

  • zamknij projekt
  • File -> Open... i wybierz nowo utworzone build.gradle
  • IntelliJ zapyta Cię, czy chcesz:
    • Open Existing Project
    • Delete Existing Project and Import
  • Wybierz drugą opcję i gotowe
Michał Kordas
źródło
Jak mogę naprawić problem polegający na tym, że nowy projekt musi znajdować się w innym folderze?
barracuda317
Czy to dodaje pliki JAR ze struktury projektu | Biblioteki jako zależności i tworzą plik EAR (przy użyciu wtyczki) zgodnie z definicją w strukturze projektu | Artefakty?
NOTiFY
@NOTiFY Wątpię, że tak. Jest to równoważne sprawdzeniu projektu od zera.
Michał Kordas,
@Michal Kordas Dodałem wszystkie zależności ręcznie, nie zajęło mi to czasu, którego oczekiwałem, a teraz dodaję kreację WAR, JAR & EAR. Prośba o tę funkcję jest dostępna na stronie JetBrains youtrack.jetbrains.com/issue/IDEABKL-6990
NOTiFY
46

Inny sposób, prostszy.

Dodaj swój

build.gradle

plik do katalogu głównego projektu. Zamknij projekt. Ręcznie usuń plik * .iml. Następnie wybierz „Importuj projekt ...”, przejdź do katalogu swojego projektu, wybierz plik build.gradle i kliknij OK.

Guildenstern70
źródło
21

W IntelliJ 2017.2.4 po prostu zamknąłem projekt i ponownie go otworzyłem i pojawiło się okno dialogowe z pytaniem, czy chcę połączyć się z build.gradle, które otworzyło okno dialogowe importowania projektów Gradle.

Nie ma potrzeby usuwania żadnych plików ani dodawania wtyczki pomysłu do build.gradle .

Raniz
źródło
2
Potwierdzam, że to działa ładnie. Po prostu uruchom gradle init w katalogu głównym projektu, a po następnym otwarciu projektu pojawi się okno dialogowe.
Alex H.
16

Podobnie jak w przypadku przyszłego odniesienia, jeśli masz już Mavenprojekt, wszystko, co musisz zrobić, to zrobić gradle initw katalogu projektu, który wygeneruje build.gradlei inne zależności, a następnie wykonaj gradle buildw tym samym katalogu.

Yar
źródło
2
Interesujące: Tworzenie nowych kompilacji Gradle - Uwagi: gradle initpotrafi generować różne typy projektów, a nawet umie tłumaczyć proste pom.xmlpliki do Gradle.
Guy Coder
7

Używam wersji 12 IntelliJ.

Rozwiązałem podobny problem, tworząc całkowicie nowy projekt i „Wyewidencjonowywanie z kontroli wersji”. Późniejsze połączenie dwóch projektów było dość łatwe.

hippoLogic
źródło
1
  1. Dodaj build.gradlew katalogu głównym projektu.

  2. Wtedy po prostu File->Invalidate Caches / Restart

Oto podstawowy plik build.gradle dla projektów Java:

plugins {
    id 'java'
}

sourceCompatibility = '1.8'
targetCompatibility = '1.8'
version = '1.2.1'
Gayan Weerakutti
źródło