首页 > 解决方案 > 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?

有没有人暗示可能缺少什么或我可以尝试什么?

感谢您的帮助!

问候西蒙

标签: gradlekotlinintellij-ideabuilddependencies

解决方案


很抱歉回复晚了,但正如您在第一篇文章的评论中看到的那样,问题得到了解决。

问题是,当您进行多项目设置时,gradle 正在扫描分层文件夹。与 gradle 多项目相关的根项目的每个子文件夹都需要包含一个 build.gradle / build.gradle.kts 文件,即使它是空的。

这样,一切都运行良好,至少在 IntelliJ 中,gradle 支持运行良好并且模块创建正确。


推荐阅读