【问题标题】:Gradle multi-project buildSrc not working in subprojectGradle多项目buildSrc在子项目中不起作用
【发布时间】:2020-06-04 05:52:32
【问题描述】:

在使用 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 任务时,我收到 unresolved reference Versions 错误。

Dependencies.kt 包含 Versions 类,它看起来像这样:

object Versions {
  const val log4j = "1.2.16"
}

所以在我看来,gradle 可以找到依赖项和 Versions 类,但由于某种原因,子项目的任务无权访问 buildSrc?

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

感谢您的帮助!

问候 西蒙

【问题讨论】:

  • 谢谢,但不幸的是它没有帮助我。但是,我确实注意到,当“中间”文件夹也通过添加 gradle.build.kts 文件成为项目时,它似乎可以工作。如果父级不是直接上一级,可能子项目会混淆?

标签: gradle kotlin intellij-idea build dependencies


【解决方案1】:

抱歉回复晚了,但问题已解决,如您在第一篇文章的 cmets 中看到的那样。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 2021-06-16
    • 1970-01-01
    相关资源
    最近更新 更多