Я изучаю Liquibase и Spring Boot, поэтому я создал простой проект с Spring Initializr .
В добавленном мной файле POM.xml:
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<propertyFile>src/main/resources/application.properties</propertyFile>
</configuration>
</plugin>
Я указал в качестве файла свойств application.properties, поэтому вся конфигурация моего приложения может быть в одном файле.
Когда я запускаю любую задачу liquibase-maven-plugin из IntelliJ, я получаю разные ошибки, вот пример запуска задачи changeLogSync:
[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.4.1:changelogSync (default-cli) on project simpleTest: The changeLogFile must be specified
Если я добавлю нужные ключи в приложение. Свойства, я смогу заставить его работать.
Например, я обнаружил, что liquibase-maven-plugin не будет читать свойство spring.datasource.url , а будет читать только свойство url .
По этой причине мои application.properties должны быть похожими:
environment = JUnit
spring.datasource.url = jdbc:h2:file:./target/test
spring.datasource.driver-class-name = org.h2.Driver
spring.datasource.username = sa
spring.datasource.password = sa
spring.liquibase.change-log = classpath:/db/changelog/db.changelog-master.yaml
spring.h2.console.enabled = true
spring.h2.console.path = /h2-console
# Keys needed for liquibase maven plugin
url = jdbc:h2:file:./target/test
username = sa
password = sa
Если я буду следовать этому шаблону, у меня получится несколько ключей с немного разными именами, но с одинаковыми значениями в моем application.properties, и это решение явно очень уродливо и неэффективно.
Какой эффективный и поддерживаемый способ настройки и использования Liquibase Maven Plugin в Spring Boot?
Редактировать после ответа, полученного от Амит Кумар:
environment=JUnit
spring.datasource.url=jdbc:h2:file:./target/glossary-test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=sa
spring.liquibase.change-log=classpath:/db/changelog/db.changelog-master.yaml
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
url=${spring.datasource.url}
changeLogFile=${spring.liquibase.change-log}
username=${spring.datasource.username}
password=${spring.datasource.password}
Ошибка после редактирования:
[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.4.1:dropAll (default-cli) on project test: Error setting up or running Liquibase: liquibase.exception.DatabaseException: java.lang.RuntimeException: Cannot find database driver: Driver class was not specified and could not be determined from the url (${spring.datasource.url}) -> [Help 1]