Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在IntelliJ中构造具有接口的多模块项目?_Java_Module_Intellij Idea_Gradle_Modularity - Fatal编程技术网

Java 如何在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

我正试图以模块化的方式(使用Guice进行模块和DI)构建我的应用程序(用Gradle构建并用IntelliJ开发,这在这里似乎非常关键)。问题是,我希望模块仅通过接口进行通信,因此理想情况下,我希望实现这种结构:

+-- 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
源集的所有源目录。有关如何声明其他源目录,请参见。