Подтвердить что ты не робот

Почему мои проекты 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()
}
4b9b3361

Ответ 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 → снимите флажок создавать отдельные модули для исходного набора

когда создать новый модуль

  • Вы также можете снять эту опцию при создании нового модуля.