Java 如何在IntelliJ中构造具有接口的多模块项目?
我正试图以模块化的方式(使用Guice进行模块和DI)构建我的应用程序(用Gradle构建并用IntelliJ开发,这在这里似乎非常关键)。问题是,我希望模块仅通过接口进行通信,因此理想情况下,我希望实现这种结构:Java 如何在IntelliJ中构造具有接口的多模块项目?,java,module,intellij-idea,gradle,modularity,Java,Module,Intellij Idea,Gradle,Modularity,我正试图以模块化的方式(使用Guice进行模块和DI)构建我的应用程序(用Gradle构建并用IntelliJ开发,这在这里似乎非常关键)。问题是,我希望模块仅通过接口进行通信,因此理想情况下,我希望实现这种结构: +-- project +-- module1 +-- src +-- iface +-- impl +-- test +-- build.gradle .. +-- moduleX
+-- project
+-- module1
+-- src
+-- iface
+-- impl
+-- test
+-- build.gradle
..
+-- moduleX
+-- src
+-- iface
+-- impl
+-- test
+-- build.gradle
在build.gradle
中,我只想包括project('moduleX',configuration:'iface')
或类似的内容
在Gradle,我可以用SourceSet等工具来完成,这一切都很酷!但问题是IntelliJ无法识别它,因为我是在gradle脚本中识别它的!对于IntelliJ来说,它仍然只是一个模块
这很奇怪,因为即使maven也支持类似的项目结构(如果我没记错的话)。这是否意味着有其他方法来实现我的目标?IntelliJ希望我使用这种方法,还是只是希望我将iface和其他模块分开作为单独的模块(这是我要避免的,我不希望在我的项目中有太多的模块,因为它会降低开发环境的速度)?与使用源代码集相比,您通常会将其构建为一个多项目构建,它将映射到IntelliJ中的多模块项目,以及Eclipse中包含多个项目的工作区。要了解有关多项目构建的更多信息,请查看。中的相应章节,但这不意味着我基本上需要每个模块两个项目吗?1个用于API,1个用于实现。如果有很多模块,可能会有点忙。实际上,我们已经在使用多项目构建,但粒度级别不同。我仍然希望gradle支持带有iface/impl/test文件夹的项目,但哦,好吧,我想我会采用多项目方法;-)对于
iface
/impl
/test
,您不需要有单独的项目。默认情况下,IntelliJ将拾取main
和test
源集的所有源目录。有关如何声明其他源目录,请参见。