gpt4 book ai didi

Gradle 'apply from' 导入导致 'No such property' 问题

转载 作者:行者123 更新时间:2023-12-03 04:42:30 24 4
gpt4 key购买 nike

我正在将系统从使用 Ant 构建转换为使用 Gradle 构建。该系统有多个顶级项目,它们都共享一个为每个项目定制的通用构建系统。

我一直在通过将逻辑直接写入 build.gradle 文件来制作新构建系统的原型(prototype)。随着我越来越接近最终系统,我需要将大部分逻辑提取到模板构建中,所有项目都可以根据需要进行扩展。我还将模板构建分解为特定功能的模块。

目录结构

buildsupport/
- gradle/
- master-template.gradle
- legacy-properties.gradle
- build.gradle
main_module/
- build.gradle
- settings.gradle
module1/
- build.gradle
module2/
- build.gradle
buildsupport组件在项目之间共享,包含模板构建和我们的 JUnit 类别定义。 main_module是包含顶级 Gradle 构建文件和 module1 的主要模块和 module2是项目的子模块。

主模板.gradle
apply from: 'legacy-properties.gradle'

allprojects {
apply plugin: 'java'

...
}

legacy-properties.gradle
configure(allprojects.findAll {it.name != 'buildsupport'}) {
...
}

main_module/build.gradle
buildscript {
apply from: '../buildsupport/gradle/master-template.gradle', to: this.buildscript
}

问题

当我尝试从 main_module 运行 gradle 时目录,我从 Gradle 收到以下错误:
* Where:
Script '[redacted]\buildsupport\gradle\legacy-properties.gradle' line: 6

* What went wrong:
A problem occurred evaluating script.
> No such property: allprojects for class: org.gradle.api.internal.initialization.DefaultScriptHandler

(第 6 行是 buildscript { 的“ legacy-properties.gradle”行。)

如何让 Gradle 正确导入 legacy-properties.gradle通过 master-template.gradle将脚本写入 main_module项目?

最佳答案

经过一番折腾,我发现导入配置的顺序很重要。我正在申请 legacy-properties.gradle allprojects 之前的文件阻止 master-template.gradle ,这就是应用 java插件,声明 sourceSets堵塞。通过将“apply from”移动到 allprojects 之后 block ,脚本现在编译。

关于Gradle 'apply from' 导入导致 'No such property' 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25245046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com