我正在尝试将git commit hash发布到prometheus,为此我需要获取以下命令的输出并保存到文件。
git rev-parse HEAD
字符串
我想保存到gitReleaseVersion.txt
我在android here上发现了一些类似的帖子,但我无法将其翻译为Kotlingradle。
这是我所拥有的,但它没有创建任何文件。
task<Exec>("getVersionInfo"){
doLast {
exec {
commandLine("git rev-parse HEAD > gitReleaseVersion.txt")
}
}
}
型
输出:无错误,无文件
也尝试过
task<Exec>("getVersionInfo"){
val logFile = file("src/main/resources/gitReleaseVersion.txt")
exec {
commandLine("git rev-parse HEAD").standardOutput.to(logFile)
}
}
型
输出量:
无法运行程序“git rev-parse HEAD”(在目录“/Users/kaigo/code/core/module/base/function-base”中):error=2,没有这样的文件或目录
该文件确实存在,如果我打印文件路径,链接将解析为该文件。
1条答案
按热度按时间roqulrg31#
exec {}
立即运行可执行文件。如果您想定义一个Exec任务,那么不要使用exec {}
,而是配置您的自定义getVersionInfo
任务。如果你想在一个任务中运行多个命令,使用
exec {}
是很好的,但是这里你只使用了一个。1.需要将参数分割成一个列表,或者(如果可用)使用
parseSpaceSeparatedArgs()
实用程序。1.将输出通过管道传送到文件。Git会将
>
解释为它自己的参数,你会得到一个类似fatal: ambiguous argument '>': unknown revision or path not in the working tree
的错误。相反,capture the output并将其写入文件。
1.注册任务输入和输出是一个好主意,这样Gradle就能够监控任务,并避免在没有任何变化的情况下重新运行它们。
在应用这些更新后,您将获得如下内容:
字符串
Be aware that this implementation is not compatible with Configuration Cache,并将导致这些错误:
型