Java和Gradle的模块的源代码结构是否不同?

时间:2019-03-16 14:47:16

标签: java gradle java-module

我看到在Gradle中,我们将模块声明为alert,但是在OpenJDK中,他们将其声明为artifact/src/main/java/module-info.java。然后在Jenkov中有src/com.group.artifact/module-info.java

我很困惑,应该使用哪一个?我有一个Gradle项目,其中包含多个子项目。我正在尝试将子项目用作模块。当我使用Jenkov方法时,IntelliJ IDEA出现错误,我必须切换到Gradle one。一样吗?

1 个答案:

答案 0 :(得分:2)

OpenJDK和Gradle仅具有用于构造源代码的不同约定。由于您使用的是Gradle(因此使用了Gradle的Java语言插件),因此应遵循其约定。 Gradle的Java语言插件将自动编译目录src/main/java中的代码。

假设您有两个模块com.example.moduleonecom.example.moduletwo,则项目的结构应如下所示:

build.gradle
settings.gradle
com.example.moduleone
└──src
   └──main
      └──java
         ├──{PACKAGES_AND_CODE}
         └──module-info.java
com.example.moduletwo
└──src
   └──main
      └──java
         ├──{PACKAGES_AND_CODE}
         └──module-info.java

使用Gradle并使用javac -d out --module-source-path src -m com.example.moduleone,com.example.moduletwo自己编译项目,它看起来应该像这样:

src
├──com.example.moduleone
|  ├──{PACKAGES_AND_CODE}
|  └──module-info.java
└──com.example.moduletwo
   ├──{PACKAGES_AND_CODE}
   └──module-info.java

至于'Jenkov方法':我以前从未见过这种结构,它看起来像是一种奇怪的混合,我建议不要使用它。这可能会让其他开发人员感到困惑。