gradle外部构建文件应该在哪里生效?

时间:2014-05-29 14:47:04

标签: gradle build.gradle

我想将外部文件导入build.gradle,例如

apply from 'other.gradle' 

它只会查找当前目录中的文件吗?

如何为外部构建文件设置一个众所周知的常用位置?在build.gradle中将完整路径放到other.gradle即可。

apply from '///C:/Users/me/.gradle/other.gradle' 

但不同操作系统上的用户可能有不同的路径。

我尝试在gradle.properties中添加一个属性,并在build.gradle中使用它,但它没有工作:

local_build_system="///C:/Users/me/.gradle"

apply from: '${local_build_system}/other.gradle'

我得到以下输出:

* What went wrong:
A problem occurred evaluating root project 'helloworld'.
> Could not read script 'C:\Users\me\workspace\helloworld\${local_build_system}\other.gradle' as it does not exist.

我认为在执行' apply'的过程中,该属性并未得到解决。因为该属性可以从任务中打印出来就好了

println "local_build_system ${local_build_system}"

编辑添加:

我尝试这样做的原因是阅读用户指南(第59章http://www.gradle.org/docs/current/userguide/organizing_build_logic.html),其中包含#34;共享脚本。在外部构建中定义通用配置,并将脚本应用于多个项目,可能跨越不同的构建。"

2 个答案:

答案 0 :(得分:3)

相对路径相对于构建脚本。按照惯例,脚本插件会进入$rootDir/gradle,这意味着它们可以应用apply from: "$rootDir/gradle/someScript.gradle"。脚本插件通常存储在项目的源存储库中,并且不能跨构建共享(除非多个构建共享相同的源存储库)。正如Radim所说,字符串插值仅支持双引号字符串文字。

答案 1 :(得分:0)

我实际上使用文件网址来实现这一点:

apply from: "file:///${local_build_system}/other.gradle"

gradle.properties:

local_build_system="C:/Users/me/.gradle"

这是否是在构建之间共享逻辑的正确或最佳方式我不知道,但也许没有正确或最好的方式在gradle中?