作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将系统从使用 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
是项目的子模块。
apply from: 'legacy-properties.gradle'
allprojects {
apply plugin: 'java'
...
}
configure(allprojects.findAll {it.name != 'buildsupport'}) {
...
}
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
buildscript {
的“
legacy-properties.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/
我是一名优秀的程序员,十分优秀!