gradle - Gradle多项目buildSrc在子项目中不起作用
问题描述
使用 buildSrc 时,我正在努力从子项目执行 gradle 任务。
项目结构如下所示:
root
buildSrc
src
main
kotlin
Dependencies.kt
build.gradle.kts
soa
SoaProject1
settings.gradle.kts
build.gradle.kts
SoaProject2
settings.gradle.kts
build.gradle.kts
tools
ToolProject1
ToolProject2
settings.gradle.kts
build.gradle.kts
根 settings.gradle.kts 如下所示:
include(
":SoaProject1",
":SoaProject2"
)
project(":SoaProject1").projectDir = File("soa/SoaProject1")
project(":SoaProject2").projectDir = File("soa/SoaProject2")
例如,在 SoaProject 的 build.gradle.kts 文件之一中,我具有以下依赖项:
dependencies {
implementation("log4j:log4j:${Versions.log4j}")
}
导入/刷新 gradle 项目正在 Intellij 中运行,并且下载了依赖项。但是,当我尝试从子项目执行 gradle 任务时,我得到一个未解决的参考版本错误。
Dependencies.kt 包含 Versions 类,它看起来像这样:
object Versions {
const val log4j = "1.2.16"
}
所以在我看来,gradle 可以找到依赖项和 Versions 类,但由于某种原因,子项目的任务无权访问 buildSrc?
有没有人暗示可能缺少什么或我可以尝试什么?
感谢您的帮助!
问候西蒙
解决方案
很抱歉回复晚了,但正如您在第一篇文章的评论中看到的那样,问题得到了解决。
问题是,当您进行多项目设置时,gradle 正在扫描分层文件夹。与 gradle 多项目相关的根项目的每个子文件夹都需要包含一个 build.gradle / build.gradle.kts 文件,即使它是空的。
这样,一切都运行良好,至少在 IntelliJ 中,gradle 支持运行良好并且模块创建正确。
推荐阅读
- c - 在编译时检查常量变量的值
- python - 将 HTML 表单中的空输入转换为 Flask 中的 None 以在 PostgreSQL 中将它们存储为 NULL
- php - 将 IOS 表情符号转换为 web 或 android 表情符号代码
- angular - “主题”类型上不存在属性“地图”
' - java - 为什么 groovy 语句最后的“:”不会引发任何错误?
- php - mysqli bind_param 变量数与准备语句中的参数数不匹配
- c# - Debugger.IsAttached 属性的合理用例是什么
- html - 移动设备中的内容比屏幕更宽 - 如何修复?
- python - Paramiko 在 psql 上执行命令
- python - 从多处理函数返回值