gradle外部构建文件应该位于哪里?

gradle外部构建文件应该位于哪里?,gradle,build.gradle,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中使用它,但

我想将一个外部文件导入我的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章),其中说“共享脚本。在外部构建中定义公共配置,并将脚本应用于多个项目,可能跨不同的构建。”

相对路径与构建脚本相对。按照惯例,脚本插件进入
$rootDir/gradle
,这意味着它们可以从“$rootDir/gradle/someScript.gradle”应用。脚本插件通常存储在项目的源存储库中,不会跨构建共享(除非多个构建共享同一源存储库)。正如Radim已经说过的,字符串插值只支持双引号字符串文字。

我实际上使用了一个文件URL:

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

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

我不知道这是否是跨构建共享逻辑的正确或最佳方式,但gradle中可能没有正确或最佳方式?

如果要在字符串()中插入变量,请使用双引号那么,这是否意味着跨项目脚本逻辑应该进入一个所有其他项目都可以获得其通用逻辑的总体根项目?我实际上在看第59章,它定义了:“共享脚本。在一个外部构建中定义公共配置,并将脚本应用到多个项目,可能跨不同的构建。”我把它理解为“可以定义所有项目外部的构建逻辑”,我不理解您的第一个问题。(Gradle术语:一个构建有一个或多个项目。)用户指南应该说“在外部构建脚本中定义公共配置”。从技术上讲,跨构建共享这样一个脚本是可能的,但是除非这些构建位于同一个源代码存储库中,否则如何使它在每台机器上都可用?脚本可以通过HTTP应用,但这样做时当前不会缓存。因此,在实践中,需要跨构建共享的构建逻辑几乎总是作为二进制插件(作为Jar提供的插件类)共享。