Le projet s'exécute comme prévu avec spring-boot:run
. Cependant, le JAR exécutable ne parvient pas à s'exécuter car il ne parvient pas à trouver db/changelog.xml
.
Les étapes suivantes peuvent être utilisées pour reproduire le problème:
- exécuter
mvn package
depuis la racine du projet - aller dans le dossier
target
- exécuter
java -jar executable-jar-with-liquibase-1.0.0-SNAPSHOT.jar
Le journal affichera maintenant une erreur car la table domain
n'a pas été créée.
Remarquez que le fichier application.yml
est trouvé, car si liquibase.enabled
est défini sur false, il refusera de s'exécuter entièrement (comme il se doit).
application.yml
server:
context-path: /api
spring:
datasource:
platform: h2
url: jdbc:h2:mem:testdb;MODE=PostgreSQL;DB_CLOSE_ON_EXIT=FALSE
jackson:
date-format: yyyy-MM-dd
jpa:
database-platform: org.hibernate.dialect.PostgreSQLDialect
hibernate:
ddl-auto: none
liquibase:
enabled: false
change-log: classpath:db/changelog.xml
Le JAR généré contient les éléments suivants:
.
|____BOOT-INF
| |____classes
| | |____application.yml
| | |____db
| | | |____changelog.xml
| | | |____changelogs
| | | | |____changelog_000.xml
| | |____nl
| | | |_____42
| | | | |____app
| | | | | |____ApplicationConfig.class
| | | | | |____domain
| | | | | | |____Domain.class
| | | | | | |____DomainController.class
| | | | | | |____DomainRepository.class
| | | | | | |____DomainService.class
| | | | | |____shared
| | | | | | |____AbstractEntity.class
| | | | | |____WebAppConfig.class
| | | | |____WebApplication.class
| |____lib
| | |____... (liste complète des fichiers jar omise)
| |____META-INF
| | |____...(structure des répertoires jar omise)
|____org
| |____springframework
| | |____...(structure des répertoires jar omise)
Le projet complet peut être trouvé ici: https://github.com/robert-bor/executable-jar-with-liquibase
Qu'est-ce que je fais mal ici?