我想将外部文件导入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;共享脚本。在外部构建中定义通用配置,并将脚本应用于多个项目,可能跨越不同的构建。"
答案 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中?