我看到在Gradle中,我们将模块声明为alert
,但是在OpenJDK中,他们将其声明为artifact/src/main/java/module-info.java
。然后在Jenkov中有src/com.group.artifact/module-info.java
。
我很困惑,应该使用哪一个?我有一个Gradle项目,其中包含多个子项目。我正在尝试将子项目用作模块。当我使用Jenkov方法时,IntelliJ IDEA出现错误,我必须切换到Gradle one。一样吗?
答案 0 :(得分:2)
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方法':我以前从未见过这种结构,它看起来像是一种奇怪的混合,我建议不要使用它。这可能会让其他开发人员感到困惑。