【问题标题】:How to import multiproject build in buildSrc dir in Gradle?如何在 Gradle 的 buildSrc 目录中导入多项目构建?
【发布时间】:2014-06-02 08:43:50
【问题描述】:

您好,在我的 buildSrc 目录中,我有两个独立的项目,我们将它们命名为 onetwo。 我在 buildSrc 目录中添加了 build.gradlesettings.gradle 文件,并在其中写道: settings.gradle

include \
    "one",
    "two"

但是当我尝试使用这个项目提供的一些插件时,Gradle 说找不到这个导入。我搜索了类似的问题,发现我必须在 buildSrc 中的 build.gradle 文件中写:

dependencies {
    runtime subprojects.collect { owner.project(it.path) }
}

这条线是什么意思?为什么我必须添加它? BuildSrcclasspath 上自动添加编译的类,还是我错了?

【问题讨论】:

  • 您是在配置项目还是自己构建脚本? buildSrc 用于脚本依赖本身(不是项目的)。

标签: plugins gradle


【解决方案1】:

Gradle 自动将“buildSrc 项目”及其运行时依赖项放在 buildscript 类路径上,但不会自动将 buildSrc 的子项目放在 buildscript 类路径上。

如果您有如上所述的多项目构建,则 buildSrc 是根项目,但您的自定义逻辑位于子项目中。现在,当 gradle 将 buildSrc.jar 放在 buildscript 类路径上时,它或多或少是空的。

sn-p

dependencies {
    runtime subprojects.collect { owner.project(it.path) }
}

将所有子项目作为运行时依赖项添加到根 buildSrc 项目中。这应该可以解决您的问题,因为 Gradle 将 buildSrc AND 它的运行时依赖项放在 buildscript 类路径上。

【讨论】:

  • 好的。现在我了解了整个情况,但无法详细了解 sn-p。遍历所有子项目并将其路径添加到所有者。楼主是什么?这个对象由什么组成?
  • 这里,owner是闭包的所有者,或者换句话说,它是对创建闭包的上下文的引用。在上下文上方的 sn-p 中是 dependencies{} 块。查看victorsavkin.com/post/4135607663/groovy-resolve-strategies 了解有关 groovys 闭包委托/所有者的更多详细信息。
猜你喜欢
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 2014-09-09
  • 2021-06-04
  • 2022-01-10
  • 2017-12-03
  • 2015-04-26
  • 1970-01-01
相关资源
最近更新 更多