Gradle多项目buildSrc在子项目中不起作用

标签 gradle kotlin intellij-idea build dependencies

使用 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 版本 错误。

Dependencies.kt 包含 Versions 类,它看起来像这样:
object Versions {
  const val log4j = "1.2.16"
}

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

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

感谢您的帮助!

问候
西蒙

最佳答案

很抱歉回复晚了,但正如您在第一篇文章的评论中看到的那样,问题得到了解决。
问题是,当您进行多项目设置时,gradle 正在扫描分层文件夹。与 gradle 多项目相关的根项目的每个子文件夹都需要包含一个 build.gradle/build.gradle.kts 文件,即使它是空的。
这样,一切都运行良好,至少在 IntelliJ 中,gradle 支持运行良好并且模块创建正确。

关于Gradle多项目buildSrc在子项目中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60310891/

相关文章:

java - 如何在没有 jar 依赖的 Gradle 中创建共享项目

android - 如何让第三方库使用 gradle 构建脚本自动构建?

elasticsearch - 如何使用build.gradle为您的测试设置Elasticsearch

android - 通过调试或发布过滤 androidDependency

json - Gson.toJson()保留父级和子级字段,其中子级字段占主导

Eclipse 到处搜索

types - 如何在 Kotlin 中使用递归类型

kotlin - 使用 Kotlin JS 'fun <T> parse(text: String): T` 解析 JSON?

intellij-idea - 如何从 CVS 在 IntelliJ 中创建新项目/模块?

java - 什么相当于 intellij 中的 eclipse 部署程序集 list 条目?