java - Flat 的子项目包含在 gradle 中未找到的多项目

标签 java gradle

我在 gradle 中陷入了传递依赖注入(inject)的困境。我有以下结构:

A/
  build.gradle.kts
  settings.gradle.kts
B/
  build.gradle.kts
  settings.gradle.kts
  C/
    build.gradle.kts
  • A 依赖于项目 B。
  • A 公寓包括 B
  • B 包括 C
  • A 和 B 位于不同的存储库中,因此它们没有共同的根。

当我构建 A 时,出现以下错误:

* Where:
Build file '/.../B/build.gradle.kts' line: 7
* What went wrong:
Project with path 'C' could not be found in project ':B'.

我应该在 A/settings.gradle.kts 中放入什么才能使其正常工作?

<小时/>

这是重现我的问题的所有文件:

A/build.gradle.kts

plugins { `java-library` }
dependencies { api(project("B")) }

A/settings.gradle.kts

rootProject.name = "A"
includeFlat("B")

B/build.gradle.kts

plugins { `java-library` }
dependencies { api(project("C")) }

B/settings.gradle.kts

rootProject.name = "C"
include("C")

B/C/build.gradle.kts

plugins { `java-library` }
dependencies { }

这是在 B 中列出项目的输出

B/# gradle -q projects
------------------------------------------------------------
Root project
------------------------------------------------------------
Root project 'B'
\--- Project ':C'

最佳答案

你可以尝试这样的事情:

A/settings.gradle.kts

rootProject.name = "A"
include("B", "B:C")
project(":B").projectDir = File(settingsDir, "../B")
project(":B:C").projectDir = File(settingsDir, "../B/C")

结果

gradle -q projects

关于java - Flat 的子项目包含在 gradle 中未找到的多项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55020594/

相关文章:

java - 使用 Gradle 的 JAR 中的 META-INF/服务

Android Studio 在真实设备上运行应用程序需要很长时间

gradle - 使用 Gradle War Plugin 时如何使 bootRepackage 依赖于 jar 而不是 war

Gradle 依赖项 : compile using local jar vs compile from maven repository?

gradle - 查看存储库中是否存在Gradle构建中工件的较新版本

java - 如何在没有时区对话的情况下解析时间?

java - 我的 Java System.out.print 似乎略有重叠

java - 如何在 Java 中导入 Google Cloud 客户端库

java - 如何等待来自 DockerClient.waitContainerCmd() 的 ResultCallback?

java - Java中局部变量的生命周期