shell - Gradle:无法使用 shell 命令初始化变量
问题描述
我想通过build.gradle
文件中的一些 shell 命令初始化一些变量
def YEAR_MONTH_DAY=['date +%F'].execute().text.trim()
def BUILD_DATE=['date -u +%FT%T.%3NZ)'].execute().text.trim()
def IMAGE_NAME ='bca/cab-imaging'
def SHORT_VCS_REF=['git rev-parse --short HEAD'].execute().text.trim()
def VERSION=YEAR_MONTH_DAY+'-'+SHORT_VCS_REF
但我明白了
> Cannot run program "date +%F": error=2, No such file or directory
我究竟做错了什么?如何通过 shell 命令初始化变量?
我也试过
def YEAR_MONTH_DAY= new ByteArrayOutputStream()
exec{
commandLine "sh","date +%F"
standardOutput = YEAR_MONTH_DAY;
}
但我得到了
> Process 'command 'sh'' finished with non-zero exit value 127
解决方案
我是这样做的
project.ext.IMAGE_NAME='bca/cab-imaging'
project.ext.BUILD_DATE= new Date().format("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
project.ext.YEAR_MONTH_DAY=new Date().format('yyyy-MM-dd')
project.ext.SHORT_VCS_REF=new ByteArrayOutputStream()
exec{
commandLine 'git','rev-parse', '--short', 'HEAD'
standardOutput = SHORT_VCS_REF;
}
project.ext.VERSION=project.YEAR_MONTH_DAY+"-"+"$SHORT_VCS_REF"
然后我可以访问它们project.VERSION
等。
推荐阅读
- ruby-on-rails - Rails.cache.read 未在测试中读取
- hibernate - 为类提供了错误类型的 id
- javascript - Discord.js 如何知道用户是否阻止了机器人
- r - 从数据框信息中提取的摘要
- html5-video - 当videojs中的视频发生变化时如何保持播放器大小不变?
- r - 关于 R 中使用 caret 包的 svm 的一些问题
- sumo - 声明 SUMO_HOME 时遇到问题
- python - 如何使用“reply_time_in_minutes”指标?
- angular - 模拟 http => 在 Angular 7 中返回 observable 的问题
- google-apps-script - 我可以根据另一个匹配的单元格条件使用 Google Apps 脚本自动链接两个单元格吗?