Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
代码从build.gradle移动到groovy失败_Gradle_Groovy_Build.gradle - Fatal编程技术网

代码从build.gradle移动到groovy失败

代码从build.gradle移动到groovy失败,gradle,groovy,build.gradle,Gradle,Groovy,Build.gradle,我在build.gradle中的exec类型任务中有一些git提交功能 task getCommits(type: Exec){ // Some code goes here . . commandLine "git", "log", "${previousVersionString}..${releaseVersion}" } 上述代码在build.gradle中运行良好 作为清理活动的结果,我将这段代码从build.gradle中删除,并将其放入groovy类中,但它表示无法解析命令行 我

我在build.gradle中的exec类型任务中有一些git提交功能

task getCommits(type: Exec){
// Some code goes here
.
.
commandLine "git", "log", "${previousVersionString}..${releaseVersion}"
}
上述代码在build.gradle中运行良好

作为清理活动的结果,我将这段代码从build.gradle中删除,并将其放入groovy类中,但它表示无法解析命令行

我对gradle和groovy很陌生,
有人能告诉我哪里出错了吗?命令行是Gradle方法,不能在外部调用

要在任何groovy脚本中执行命令行:

def proc = ['git', 'log', "${previousVersionString}..${releaseVersion}"].execute()
println (proc.err.text ?: proc.text)

Gradle文件是DSL,不是纯Groovy。。。您不能只提取代码行并将它们放在单独的文件中。如果您只想将Gradle功能外包到其他文件中,您可以编写一个自定义任务并将其添加到buildSrc中,使用单独的
。Gradle
脚本并通过
应用于:'path/to/script'
。好的,您能提供此行的翻译以及命令行“git”、“tag”、“l”吗${searchVersionString},“--sort=-version:refname”但是你最好使用自定义任务是吗?那看起来没有原来那么干净…是的,我们当然可以,但是我在写一个插件,这是我第一次写它,我遵循groovy类的通用风格作为插件,这就是为什么我要这么做。你在写Gradle插件吗?在这种情况下,你仍然可以使用命令行:project.task('getCommissions',type:Exec).commandLine(“git”,“log”,“${previousVersionString}..${releaseVersion}”)是一个gradle插件,但我已经在groovy类中去掉了git的功能,这就是为什么需要将其转换为groovy,否则在build.gradle中它的工作方式就像charm一样。BDW作为插件运行上面的代码会给出一个模糊的参数