go - 将 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''
解决方案
您可以使用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
.
推荐阅读
- java - 将大型 Json 文件(大约 300 Mb)解析为 POJO 列表
- python - 如何在 VS Code 中为 Python 中的私有成员自动生成 Getter 和 Setter 方法?
- python - 一旦时间增量高于 xy,就创建新的数据帧
- javascript - 使用 .replace() 方法可以替代 innerHTML 吗?
- .net-core - Swagger 不断收到未经授权的错误,即使使用 JWT 令牌进行授权
- python - pandas:完全匹配在 if AND 条件下不起作用
- reactjs - 如何从不同的功能组件传递数据?
- typescript - RxJS 等待订阅 Observable 完成
- r - R错误:对象长度不是较短对象长度的倍数
- javascript - 文件名的下一个构建问题