ConfigSlurper的groovy文件如何调用build.gradle中定义的方法?
我正在处理一个项目,它的构建逻辑是在gradle中定义的,并且有一个build.gradle文件。现在,我们想使用groovy的ConfigSluber管理项目的属性。而且,我已经将config.groovy文件放在包含项目所有帮助程序类的文件夹中。conf.groovy文件的内容如下:ConfigSlurper的groovy文件如何调用build.gradle中定义的方法?,groovy,gradle,Groovy,Gradle,我正在处理一个项目,它的构建逻辑是在gradle中定义的,并且有一个build.gradle文件。现在,我们想使用groovy的ConfigSluber管理项目的属性。而且,我已经将config.groovy文件放在包含项目所有帮助程序类的文件夹中。conf.groovy文件的内容如下: categories { includeCategories = defaultIncludeCategories() excludeCategories = defaultExcludeCategories(
categories {
includeCategories = defaultIncludeCategories()
excludeCategories = defaultExcludeCategories()
}
String defaultIncludeCategories() {
def include = 'default'
if( isAbcJob() ) {
include = 'tier0'
}
logger.info "defaultIncludeCategories: $include"
include
}
现在,正如您所看到的,我需要在配置文件中使用一个名为isAbcJob的方法,但这个方法存在于build.gradle中,该文件调用conf.groovy文件进行属性管理
底线是conf.groovy脚本如何知道isAbcJob方法在哪里
请提供建议。我发现Gradle论坛上提出的以下问题非常有用。而且,除非您通过任务访问其他gradle脚本的方法,否则无法访问这些方法:
你为什么要这样做,而不是从:申请调用单独的gradle脚本?例如:@tim_yates我是gradle的新手,请耐心听我说。我尝试了你的建议,但发现错误“isAbcjob”。而且,如果您建议将所有参与定义配置的方法移动到新的“other.gradle”文件中,那么我想这将非常困难,因为有这么多方法。此外,这些方法也参与了构建逻辑的定义。请提供建议,如果可以,请详细解释为什么我不应该使用configSlurper,为什么我应该使用您建议的方法,那就太好了。我只是担心你所走的路线会导致一个非常复杂的构建脚本,最终会被所有人憎恨。你能举一个简单的例子来说明你想做什么吗?为什么构建逻辑如此复杂?为什么构建中包含配置?@tim_yates构建逻辑如此复杂,因为它是一个内部企业项目,有3000行构建逻辑。问题是有40多个实验室使用这种构建逻辑通过Jenkins运行作业。因此,一个脚本正在处理所有这些实验室的设置配置。其中一些是Windows、Unix、Mac等,因为涉及多个作业、多个平台和多个测试域,这使得它更加复杂。现在,我们的build.gradle通过查看作业类型等动态设置了许多环境变量。请在此处添加链接答案的相关部分。