我在Gradle看到,我们宣布一个模块为artifact/src/main/java/module-info.java
,但在OpenJDK,他们宣称它为src/com.group.artifact/module-info.java
。然后在Jenkov我们有src/main/java/com.group.artifact/module-info.java
。
我很困惑,我应该使用哪一个?我有一个包含多个子项目的Gradle项目。我正在尝试将子项目用作模块。当我使用Jenkov方法时,IntelliJ IDEA会出错,我必须切换到Gradle 1。它是一样的吗?
OpenJDK和Gradle对于构造源代码只有不同的约定。由于您使用的是Gradle(以及Gradle的Java语言插件),因此您应该遵循它的约定。 Gradle的Java语言插件将自动编译src/main/java
目录中的代码。
假设你有两个模块,com.example.moduleone
和com.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方法':我以前从未见过这种结构,它看起来像一个奇怪的混合物,我建议不要使用它。它可能只会让其他开发人员感到困惑。