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

IntelliJ IDEA и Gradle: Почему есть 3 модуля на подмодуль?

Меня довольно смущает интеграция с Gradle IntelliJ и сопоставление подпроектов Gradle с модулями IDEA.

  • Почему есть 3 модуля для каждого подпроекта gradle (client, client_main и client_test)?
  • Есть ли способ избавиться от "родительского" модуля? Каждый раз, когда я удаляю его, моя сборка ломается путаницей.

Project Structure

UPDATE

  • Корень содержимого третьего модуля ("сервер") всегда устанавливается на всю папку, как показано ниже. Это означает, что я не могу пометить каталоги в сборке как сгенерированные источники, поскольку по умолчанию они исключены.

enter image description here

4b9b3361

Ответ 1

Теперь можно отменить выбор этой опции при импорте проекта gradle в IDEA, установленном в 2016.1.2 Ultimate IDE. Сначала перейдите в параметр импорта gradle и выберите файл gradle.

Диалог импорта проекта

Затем в появившемся диалоговом окне убедитесь, что вы отменили выбор, указав создать отдельный модуль для каждого исходного набора. По умолчанию этот параметр выбран. Теперь продолжайте импортировать проект, как обычно.

Gradle диалог конфигурации

И что он, вы можете наслаждаться своим проектом, только один модуль будет создан для каждого подпроекта в проекте с несколькими проектами gradle.

Этот параметр полезен, если у вас есть отдельный подпроект в gradle для тестов, подобных мне. В противном случае метод по умолчанию работает очень хорошо, так как мне было легче запустить модульные тесты.

Импортированный проект, вид пакета

Надеюсь, что это поможет.

Ответ 2

Если вы хотите просто отключить эту опцию для ранее импортированного проекта, вы можете сделать это, отредактировав файл конфигурации idea gradle, расположенный в .idea/gradle.xml.

Добавьте эту строку, которая устанавливает для resolModulePerSourceSet значение false:

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  ...
  <component name="GradleSettings">
    <option name="linkedExternalProjectsSettings">
      <GradleProjectSettings>
        ...
        <option name="resolveModulePerSourceSet" value="false" />
      </GradleProjectSettings>
    </option>
  </component>
</project>

А затем обновите проект Gradle.