Найкращий спосіб додати підтримку Gradle до проекту IntelliJ


168

Я трохи оглянувся і не знайшов найкращого рішення для перетворення існуючого проекту IntelliJ в Gradle. Я працюю в командному середовищі, і зараз ми ділимось .ipr-файлом, оскільки у нас є кілька конфігурацій побудови, які ми відстежуємо. Ми зрештою позбудемося тих, хто виступає за Gradle, але я не можу надто викрутити речі, поки не буде здійснено перетворення Gradle.

Крім того, наші вихідні файли Java розташовані в корені каталогу src замість src / main / java, як це є стандартним.

Чи є спосіб я додати Gradle до свого проекту, який не змусить мене видалити і відтворити мій проект IntelliJ і не накрутить всіх інших, коли вони роблять потяг Git?


2
Щоб відповісти на питання вашого вихідного каталогу - вам потрібно замінити каталог джерел за замовчуванням з sourceSets . Подивіться, як ми це зробили в драйвері Java MongoDB: github.com/mongodb/mongo-java-driver/blob/…
Trisha

Відповіді:


208

Додати:

build.gradle 

у вашій папці кореневого проекту та використовуйте плагін, наприклад:

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

і з цим вогнем з командного рядка:

gradle cleanIdea 

і після цього:

gradle idea

Після цього все має спрацювати


7
при спробі цього рішення хтось натрапив на помилку "Модуль" xx "не підтримується gradle? якщо так, як це було вирішено
Marquis Blount

Дякую, це зводило мене з розуму, і я не міг зрозуміти, як змусити IntelliJ оновити залежність проектів після додавання його до build.gradle.
Amala

ідея gradle (це залежить від ideaProject, ideaModule, ideaWorkspace) не працювала для мене, оскільки ideaModule постійно провалювався. Натомість завдання Gradle ideaProject спрацювало чудово, і проект тепер увімкнено Gradle.
paranza

Добре, що з цим підходом є проблема. Ви отримаєте помилку "Не можна застосовувати залежності до groovy.lang.closure". Перегляньте замість цього рішення: stackoverflow.com/a/17168175/2517730
Яр

1
Це дещо застаріло, оскільки ідея плагіну Gradle все ще вдається до файлового ідеального проекту, тоді як проект на базі папок є стандартним та набагато зручнішим
Xerus

74

Видаляти .imlфайли не потрібно . Дотримуйтесь цього:

  • закрити проект
  • File -> Open... і виберіть новоствореного build.gradle
  • IntelliJ запитає, чи хочете ви:
    • Open Existing Project
    • Delete Existing Project and Import
  • Виберіть другий варіант, і ви закінчите

Як я можу вирішити проблему, що новий проект повинен бути в іншій папці?
barracuda317

Чи додає це JAR з вашої структури проекту | Бібліотеки як залежність і створюють EAR (використовуючи плагін), як визначено в Project Project | Артефакти?
NOTiFY

@NOTiFY Я сумніваюся, що це так. Це еквівалентно перевірки проекту з нуля.
Міхал Кордас

@Michal Kordas Я додав усі залежності вручну, ніде не зайняв часу, який я очікував, і тепер додаю створення WAR, JAR & EAR. Для цього є запит на функцію на JetBrains youtrack.jetbrains.com/issue/IDEABKL-6990
NOTiFY

46

Інший спосіб, простіший.

Додайте своє

build.gradle

файл у корінь вашого проекту. Закрийте проект. Видаліть * .iml файл вручну. Потім виберіть "Імпортувати проект ...", перейдіть до каталогу проектів, виберіть файл build.gradle та натисніть кнопку ОК.


21

У IntelliJ 2017.2.4 я щойно закрив проект і відновив його, і у мене з’явилося діалогове вікно, яке запитує мене, чи хочу я зв’язатися з build.gradle, який відкрив діалог імпорту проектів Gradle.

Не потрібно видаляти жодні файли або додавати плагін ідеї для build.gradle .


2
Можна підтвердити, що це працює добре. Просто запустіть gradle init у корені проекту, тоді ви отримаєте діалогове вікно наступного разу, коли відкриєте проект.
Алекс Х.

16

Як майбутня довідка, якщо у вас вже є Mavenпроект, все, що вам потрібно зробити, - це зробити gradle initу вашому каталозі проектів, який генерує build.gradleта інші залежності, а потім зробіть gradle buildу цьому ж каталозі.


2
Цікаво: Створення нових будівель Gradle - Примітки: gradle initможе створювати різні проекти різних типів і навіть знає, як перекласти прості pom.xmlфайли в Gradle.
Гай Кодер

7

Я використовую версію 12 IntelliJ.

Я вирішив подібну проблему, створивши абсолютно новий проект, і "Перевірка з контролю версій" Злиття двох проектів пізніше було досить просто.


1
  1. Додайте build.gradleу кореневий каталог вашого проекту.

  2. Тоді просто File->Invalidate Caches / Restart

Ось базовий build.gradle для проектів Java:

plugins {
    id 'java'
}

sourceCompatibility = '1.8'
targetCompatibility = '1.8'
version = '1.2.1'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.