IntelliJ IDEA - создает или воссоздает каталоги, которые я не хочу или уже удалил - PullRequest
0 голосов
/ 28 апреля 2018

Сценарий

Я создаю приложение Kotlin с использованием модулей Gradle в IntelliJ IDEA.

Я столкнулся с проблемой, когда для каждого модуля Gradle, который я создаю в проекте, IntelliJ IDEA автоматически создает и / или заново создает структуры каталогов для исходных наборов, которые мне не нужны.

Я использую IntelliJ IDEA 2018.1.2 в Windows 10 x64.

Шаги для воспроизведения

  1. Открыть IntelliJ IDEA и «Создать новый проект»
  2. Создание проекта Gradle
  3. Только из «Дополнительные библиотеки и фреймворки» отметьте «Kotlin (Java)»
  4. Укажите для проекта GroupId, ArtifactId и Version
  5. Установите флажок «Использовать автоматический импорт» и снимите флажок «Создать отдельный модуль для исходного набора»
  6. Готово. На этом этапе должна появиться IDE, а Gradle должен синхронизироваться.

Исходная структура проекта должна выглядеть следующим образом. Я развернул только те каталоги, которые относятся к этому вопросу.

template-app
  ├ .idea
  ├ gradle
  ├ src
  │ ├ main
  │ │ ├ java
  │ │ ├ kotlin
  │ │ └ resources
  │ └ test
  │   ├ java
  │   ├ kotlin
  │   └ resources
  ├ build.gradle
  ├ gradlew
  ├ gradlew.bat
  └ settings.gradle

Мне не нужен каталог src, поэтому я удалил его, и теперь структура проекта выглядит следующим образом.

template-app
  ├ .idea
  ├ gradle
  ├ build.gradle
  ├ gradlew
  ├ gradlew.bat
  └ settings.gradle

Далее я создаю новый модуль Gradle (mod-one) в моем проекте, и теперь структура проекта выглядит следующим образом.

template-app
  ├ .idea
  ├ gradle
  ├ mod-one
  │ ├ src
  │ │ ├ main
  │ │ │ ├ java
  │ │ │ ├ kotlin
  │ │ │ └ resources
  │ │ └ test
  │ │   ├ java
  │ │   ├ kotlin
  │ │   └ resources
  │ └ build.gradle
  ├ src
  │ ├ main
  │ │ ├ java
  │ │ ├ kotlin
  │ │ └ resources
  │ └ test
  │   ├ java
  │   ├ kotlin
  │   └ resources
  ├ build.gradle
  ├ gradlew
  ├ gradlew.bat
  └ settings.gradle

Обратите внимание, что mod-one теперь содержит каталог src, но не только это, каталог src, который я удалил ранее, также был воссоздан, включая его подкаталоги.

Моя предполагаемая структура

  • Родительскому модулю (например, template-app ) вообще не требуется каталог src. На этом уровне проекта не будет кода.

  • Каждый модуль (например, mod-one ) не будет содержать никаких тестов и, следовательно, потребует только main source-set / module, но не test source-set / модуль.

  • Тесты будут содержаться в одном модуле (например, mod-tests ), и поэтому для них потребуется только test source-set / module, но не main source-set /module.

  • Не будет Java-кода, поэтому мне не требуются java каталоги.

  • В большинстве случаев мне не потребуется resources, и я с удовольствием добавлю их в случае необходимости.

Исходя из вышеизложенного, структура должна выглядеть следующим образом.

template-app
  ├ .idea
  ├ gradle
  ├ mod-one
  │ ├ src
  │ │ ├ main
  │ │ │ └ kotlin
  │ └ build.gradle
  ├ mod-test
  │ ├ src
  │ │ └ test
  │ │   └ kotlin
  │ └ build.gradle
  ├ build.gradle
  ├ gradlew
  ├ gradlew.bat
  └ settings.gradle

Вопрос

Почему IntelliJ IDEA создает и / или воссоздает каталоги, которые мне не нужны, и как я могу это остановить?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Даже если такое поведение не должно происходить при отключенной опции ответа @Andrey, вы можете попытаться запретить IntelliJ создавать каталоги, удалив языковой плагин из Gradle для вашего корневого проекта, так как вы не хотите использовать все равно это для источников.

Когда вы создаете новый проект или модуль Gradle в IntelliJ и выбираете язык в качестве дополнительного каркаса (например, Java или Kotlin), соответствующий плагин Gradle будет автоматически добавлен в сценарий сборки, файл build.gradle будет содержать что-то вроде :

apply plugin: 'java'
// OR
apply plugin: 'kotlin'

Однако вам не нужно применять эти плагины к проекту Gradle, у которого не будет никаких источников. Если позже вы добавите модуль (подпроект), просто укажите дополнительную языковую среду для этого модуля.

Относительно желаемой структуры проекта: обратите внимание, что вы нарушаете соглашения, что возможно, но, пожалуйста, пересмотрите, если вы действительно этого хотите. Хотя добавлять и расширять исходные наборы в Gradle просто, удалить предопределенные исходные наборы может быть сложнее (попробуйте метод removeIf базового Collection SourceSetContainer).

И последнее, но не менее важное: вам не следует обращать внимания на пустые каталоги. Спрятать их через IDE просто, и Git не добавит их в систему управления версиями, если они останутся пустыми. Не переоценивайте свою сборку Gradle за небольшую дополнительную стоимость!

Редактировать: Я только что вспомнил, что вы можете применить плагин java-base вместо плагина java для создания контейнера набора источников без добавления наборов источников по умолчанию. Однако я не уверен, существует ли подобный базовый плагин для разработки Kotlin.

0 голосов
/ 28 апреля 2018

Снимите флажок Автоматически создавать каталоги для пустых корней содержимого в Настройках (Предпочтения) | Сборка, выполнение, развертывание | Инструменты для сборки | Gradle.

Если эта опция включена при каждом повторном импорте из gradle IDE автоматически создает структуру каталогов в соответствии с вашими файлами build.gradle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...