首页 > 解决方案 > 将 go 命令作为 gradle 任务运行

问题描述

我正在使用 gradle 作为 terraform 项目的构建工具。我确实在 ..test/... 文件夹下为项目编写了单元测试。我在本地运行测试的方式只是在命令行上go test ..test/..,它将tests在 test 文件夹下运行。我想把这个集成到构建中,这样每次构建都会运行这个命令'go test ..test/..',我如何在 gradle 中实现这个。可以使用自定义任务来运行go命令吗?

我正在尝试执行以下操作

task testExec(type: Exec) {
    workingDir "${buildDir}/test"
    commandLine 'go','test'
} doLast {
    println "Test Executed!"
}

但我得到了错误

> A problem occurred starting process 'command 'go''

对于它的价值,我尝试了其他命令并为 ex 得到相同的错误

task testExec(type: Exec) {
     workingDir "${buildDir}/test"
     commandLine 'echo','${}buildDir'
} doLast {
     println "Test Executed!"
}

给出类似的错误

> A problem occurred starting process 'command 'echo''

标签: gogradleterraformterratest

解决方案


您可以使用gradle 插件。首先,您可以按照入门指南添加插件:

plugins {
    id 'com.github.blindpirate.gogradle' version '0.11.4'
}

golang {
    packagePath = 'github.com/your/package' // go import path of project to be built, NOT local file system path!
}

然后您可以运行以下命令来执行所有遵循文件名约定的 go 文件<name>_test.go

gradlew goTest 

否则,您还可以使用插件创建完整的自定义任务或自定义任务。

编辑

我找到了你错误的原因。该变量buildDir引用build您项目中的文件夹:<project_folder>/build. 现在的问题是文件夹test不存在,抛出异常。相反,您可以使用变量projectDir.


推荐阅读