我有一个Gradle构建脚本( build.gradle
),我在其中创建了一些任务 . 这些任务主要包括方法调用 . 被调用的方法也在构建脚本中 .
现在,情况如下:
我正在创建相当数量的构建脚本,其中包含不同的任务,但使用原始脚本中的相同方法 . 因此,我想以某种方式提取这些“常用方法”,因此我可以轻松地重复使用它们,而不是为我创建的每个新脚本复制它们 .
如果Gradle是PHP,那么以下内容将是理想的:
//script content
...
require("common-methods.gradle");
...
//more script content
但当然,这是不可能的 . 或者是吗?
无论如何,我怎样才能达到这个结果?这样做的最佳方法是什么?我已经阅读了Gradle文档,但我似乎无法确定哪种方法最简单,最适合这种方法 .
提前致谢!
UPDATE:
我设法在另一个文件中提取方法
(使用 apply from: 'common-methods.gradle'
),
所以结构如下:
parent/
/build.gradle // The original build script
/common-methods.gradle // The extracted methods
/gradle.properties // Properties used by the build script
从 build.gradle
执行任务后,我've bumped into a new problem: apparently, methods don' t在 common-methods.gradle
时被识别 .
关于如何解决这个问题的任何想法?
3 回答
共享方法是不可能的,但是您可以共享包含闭包的额外属性,这可归结为同样的东西 . 例如,在
common-methods.gradle
中声明ext.foo = { ... }
,使用apply from:
应用脚本,然后使用foo()
调用闭包 .在Peter's answer上构建,这是我导出方法的方法:
内容
helpers/common-methods.gradle
:这就是我在另一个脚本中使用这些方法的方法:
以下是有关在Groovy中将方法转换为闭包的更多信息:link
使用 Kotlin dsl 它的工作原理如下:
build.gradle.kts :
external.gradle.kts :