2 votes

Jar exécutable incapable de trouver Liquibase db/changelog.xml

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?

8voto

duderoot Points 760

Il y avait autrefois un problème avec la balise includeAll dans Liquibase, voir ce problème. Il devrait être corrigé entre-temps, mais pour le moment je n'arrive pas à le faire fonctionner avec la balise includeAll.

Comme solution à votre problème, utilisez :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X