Почему мои проекты gradle создают отдельные модули для main и test в Intellij Idea
В последнее время я нашел все мои проекты gradle в блоках импорта, разделенных идеей, для основного и тестового. Модули выглядят следующим образом:
![введите описание изображения здесь]()
Как вы можете видеть, существует "основной" модуль, корневой контент которого является src/main и включает только основные классы и ресурсы, а также есть "тестовый" модуль. Модули просто выглядят не так. Это ожидаемое поведение?
Идея Intellij Idea 2016.1.1
, а gradle - 2.11
Вот содержимое build.gradle
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'spring-boot'
apply plugin: "jacoco"
version = getVersion()
sourceCompatibility = 1.8
targetCompatibility = 1.8
configurations {
provided
}
sourceSets {
main {
compileClasspath += configurations.provided
}
test {
resources {
srcDir 'src/test/data'
}
compileClasspath += configurations.provided
}
}
processResources {
filter { String line -> line.replace("{version}", getVersion()) }
}
processTestResources {
filter { String line -> line.replace("{version}", getVersion()) }
}
idea {
module {
scopes.PROVIDED.plus += [configurations.provided]
}
}
repositories {
mavenCentral()
}
Ответы
Ответ 1
У меня такой же эффект, который я не ожидал особо, так как IntelliJ 14 Ultimate ведет себя совершенно по-другому в одном проекте.
Это новое поведение IntelliJ, представленное с версией 2016.1 для обработки сложных Gradle проектов (которые никогда не работали полностью до того, как вы вводили новые исходные наборы).
Это выглядит немного странно, но работает (лучше, чем раньше). И теперь вы можете увидеть зависимости для каждого исходного набора в окне проекта Gradle.
См. также Что нового в IntelliJ IDEA 2016.1 и Gradle Доброта: Наборы источников как модули IntelliJ IDEA.
Ответ 2
UPDATE:
Похоже, что Jetbrains снял флажок, о котором я говорил, так как я опубликовал это. Ответ galcyurio выглядит как правильный способ отключить эту функцию в текущих сборках.
Оригинальный ответ:
Вы можете отключить это в настройках Gradle. Настройки → Сборка, выполнение, развертывание → Инструменты сборки → Gradle: снимите флажок создавать отдельные модули для исходного набора.
Мне пришлось отключить его, так как это вызывало сбои при сборке, потому что Make вытягивал только основной исходный набор. Это, вероятно, ошибка в Intellij, потому что gradle все еще может создавать проекты просто отлично.
Ответ 3
Выше 2019,2
Я искал настройки intellij здесь и там, но не мог найти варианты.
Поэтому я проверил источник версии сообщества на GitHub.
Эта опция устарела. Не уверен, но кажется, что он невидим.
Этот параметр устарел и остается только для устранения неполадок, поскольку он не полностью совместим с моделью Gradle. Пожалуйста, рассмотрите возможность восстановления его по умолчанию (проверено)
Смотрите строки 20-22 из этого файла.
Окружающая среда
- IntelliJ IDEA 2017.2 (сборка № IU-172.3317.76, построена 15 июля 2017 г.)
- Windows 10
- Gradle проект
Устранение неисправностей
В моем случае я не могу найти вариант, который упоминал Алекс Спенс.
Вы можете отключить это в настройках Gradle. Предпочтения → Сборка, выполнение, развертывание → Инструменты сборки → Gradle: снимите флажок создавать отдельные модули для исходного набора.
Я искал об этом варианте, к счастью, многие другие ответы показали мне, где этот вариант.
Решение
Мы можем снять эту опцию, когда мы импортируем или создаем модуль и импортируем проект.
при импорте проекта
- Файл → Создать → Проект из существующих источников... → Выбрать файл → Gradle → снимите флажок создавать отдельные модули для набора источников
- Страница приветствия → Импорт проекта → Выбрать файл → Gradle → снимите флажок создавать отдельные модули для исходного набора
при импорте модуля
- Структура проекта → Добавить → модуль импорта → выбрать файл → Gradle → снимите флажок создавать отдельные модули для исходного набора
когда создать новый модуль
- Вы также можете снять эту опцию при создании нового модуля.