gpt4 book ai didi

java - 是否需要在 module-info.java 和 build.gradle.kts 中指定模块依赖关系

转载 作者:行者123 更新时间:2023-12-03 03:16:52 31 4
gpt4 key购买 nike

这是我的多项目 Gradle 设置:

.
└── gradle-module-project
   ├── application
   ├── build.gradle.kts
   ├── gradlew
   ├── list
   ├── settings.gradle.kts
   └── utilities

applicationutiltieslist 是项目,每一个里面都有一个Java Module。

也就是说,每个项目都有自己的src/main/java/module-info.java文件和build.gradle.kts文件。

application模块依赖于utilities模块,utilities模块依赖于list模块。

根目录下的

build.gradle.kts 包含以下内容:

subprojects {
..

plugins.withType<JavaPlugin>().configureEach {
configure<JavaPluginExtension> {
modularity.inferModulePath.set(true)
}
}

..
}

我觉得奇怪的是,在每个子项目中,build.gradle.kts 都需要列出依赖项。

例如,application -> build.gradle.kts 包含:

plugins {
application
}

dependencies {
implementation(project(":utilities"))
}

..

为什么 applicationbuild.gradle.kts 必须包含 implementation(project(":utilities"))

application 中的 module-info.java 已经指定了该模块所依赖的内容时。

这不是重复吗?

是否打算在module-info.javabuild.gradle.kts中都指定依赖?

最佳答案

在 Gradle 中使用 Java 模块时,必须指定两次依赖关系:一次是为了模块系统的利益,另一次是为了构建工具的利益。

我一直在关注 Java 9 Modularity 中的 Easy Text 演示应用程序由 Sandor Mak 和 Paul Bakker 开发,这是一个多模块项目。一个模块的 module-info.java 是:

module easytext.cli {
requires easytext.analysis;
}

当我将它包装在 Gradle 中时,在我的 build.gradle 文件中我还需要:

dependencies {
implementation project(':easytext.analysis')
}

也许工具 catch 来只是时间问题,我们不必两者都做。

另请查看 Paul Bakker 的 JavaOne 演示 Building JPMS Modules with Java他详细介绍了使用 Gradle 构建多模块 Java/Groovy/Kotlin 项目。

关于java - 是否需要在 module-info.java 和 build.gradle.kts 中指定模块依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63163996/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com