Makefile не читает переменную отметки времени - PullRequest
0 голосов
/ 31 марта 2020

Я хотел бы добавить Makefile в моем проекте, чтобы использовать для моих миграций команду make , сгенерированный файл должен иметь метку времени и метку в качестве имени , но когда я запускаю команду 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"

1 Ответ

0 голосов
/ 31 марта 2020

Несколько вещей, которые могут помочь здесь. Сначала вы устанавливаете DATE_WITH_TIME, используя :=, что делает немедленное расширение . Если у вас действительно длинная сборка, это будет время, когда сборочный файл был впервые прочитан, а не время запуска рецепта. Не уверен, что это ваше намерение. Вы, вероятно, хотите отсроченное расширение.

Далее версия даты и времени 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))

, которая напечатает журнал в вашем выводе, чтобы вы знали, что сделали ошибку на ранней стадии, без необходимости что-либо строить.

...