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?


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ć


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

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.


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 .


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.


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.


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'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.