繁体   English   中英

Makefile 未读取时间戳变量

[英]Makefile not reading a timestamp variable

我想在我的项目中添加一个Makefile以使用make 命令进行迁移,生成的文件应该有一个时间戳和一个标签作为 name ,但是当我运行 make 命令时,时间戳没有出现在文件名中。

这是 Makefile 脚本:

MIGRATION_LABEL = "to-be-changed"
DATE_WITH_TIME := $(shell /bin/date "+%Y%m%d%H%M%S")

makeMigration:
    mvn liquibase:diff -DdiffChangeLogFile=src/main/resources/db/changelog/changes/${DATE_WITH_TIME}-${MIGRATION_LABEL}.yml
    @echo "  - include:" >> src/main/resources/db/changelog/db.changelog-master.yml
    @echo "      file: classpath*:db/changelog/changes/$(DATE_WITH_TIME)-$(MIGRATION_LABEL).yml" >> src/main/resources/db/changelog/db.changelog-master.yml

这是错误:

C:\Users\DELL\Desktop\Project\project-backend>make makeMigration MIGRATION_LABEL="user-creation"
File path not found.
mvn liquibase:diff -DdiffChangeLogFile=src/main/resources/db/changelog/changes/-user-creation.yml

我想在“-user-creation.yml”之前看到一个时间戳

有几件事可能会有所帮助。 首先,您使用:=设置DATE_WITH_TIME ,它会立即扩展 如果您的构建时间很长,这将代表首次读取 makefile 的时间,而不是运行配方的时间。 不确定这是否是您的意图。 您可能想要延迟扩展。

接下来,日期和时间的 Windows 版本将如下所示(基于https://www.windows-commandline.com/get-date-time-batch-file/ ):

DATE_WITH_TIME = $(shell echo %date%:%time%)

最后,如果您想快速轻松地进行测试,可以使用$(info ...) makefile 指令:

DATE_WITH_TIME = $(shell echo %date%:%time%)
$(info DATE_WITH_TIME right now is $(DATE_WITH_TIME))

这将在您的输出中打印一个日志,以便您知道是否在早期犯了错误,而无需实际构建任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM