Я пытаюсь структурировать свое приложение (построенное с помощью Gradle и разработанное в IntelliJ, это выглядит очень важно здесь) модульным способом (с использованием Guice для модулей и DI). Дело в том, что я хотел бы модули общаться только через интерфейсы, поэтому в идеале я хотел бы достичь такой структуры:Как структурировать проект с несколькими модулями с интерфейсами в IntelliJ?
+-- project
+-- module1
+-- src
+-- iface
+-- impl
+-- test
+-- build.gradle
..
+-- moduleX
+-- src
+-- iface
+-- impl
+-- test
+-- build.gradle
И в build.gradle
Я хотел бы просто включить project('moduleX', configuration : 'iface')
или что-то подобное.
В Gradle Я могу сделать это с помощью sourceSets и т. Д., Вот и все круто! Но проблема в том, что IntelliJ не распознает его, так как я делаю это в сценариях градиента! Для IntelliJ это еще один модуль.
Это довольно странно, поскольку даже maven поддерживал аналогичную структуру проекта (если я правильно помню). Означает ли это, что есть какой-то другой способ добиться того, чего я хочу? И IntelliJ ожидает, что я буду использовать этот подход или просто хочу, чтобы я разделил iface, а остальные - на отдельные модули (вещь, которую я хочу избежать, я не хочу, чтобы в моих проектах было слишком много модулей, поскольку это замедляет среду dev)?
но не означает, что мне в основном нужен 2 проекта на каждый модуль? 1 для API, 1 для реализации. Это может стать немного беспокойным с большим количеством модулей. На самом деле мы уже используем сборку мультипроектов, но с разным уровнем детализации. Я все же предпочел бы, чтобы gradle поддерживал проекты с папками iface/impl/test, но хорошо, думаю, я пойду с мультипроектным подходом ;-) –
Вам не нужно иметь отдельные проекты для 'iface' /' impl'/'test'. По умолчанию IntelliJ будет собирать все исходные каталоги для наборов источников 'main' и' test'. См. Ссылку [DSL reference] (http://www.gradle.org/docs/current/dsl/org.gradle.plugins.ide.idea.model.IdeaModule.html) о том, как объявить дополнительные источники. –