web-dev-qa-db-fra.com

Spring boot - désactiver Liquibase au démarrage

Je veux avoir Liquibase configuré avec mon application de démarrage de printemps, j'ai donc ajouté des dépendances à pom.xml et défini le chemin d'accès à master.xml dans application.properties. Cela fonctionne bien et Spring exécute Liquibase au démarrage. Le problème est que maintenant je veux exécuter Liquibase manuellement, pas au démarrage de l'application. Dois-je désactiver complètement la configuration automatique de Liquibase ou puis-je l'utiliser et désactiver uniquement les évaluations en cours au démarrage?

20
Gravian

Ajouter liquibase.enabled=false dans votre fichier application.properties

Référence

Mais si vous ne souhaitez plus utiliser la base de données de l'application, retirez complètement le démarreur de base de pom.

28
Sangram Jadhav

Le nom de propriété correspondant a changé entre les versions de Spring:

  • Pour Spring 4.x.x: le liquibase.enabled=false la propriété d'application désactive Liquibase.

  • Pour Spring 5.x.x: le spring.liquibase.enabled=false la propriété d'application désactive Liquibase.


P.S. Et pour Flyway:

  • Spring 4.x.x: flyway.enabled=false

  • Spring 5.x.x: spring.flyway.enabled=false

23
Alex Shesterov

Si vous voyez sur les LiquibaseProperties, il y a un préfixe comme

 prefix = "spring.liquibase"

Donc, ma suggestion est d'utiliser

spring.liquibase.enabled=false

Il a résolu mon problème avec Spring Boot 2.0.0.RC1

19
maruf571

J'ai rencontré un problème où je ne pouvais pas désactiver Liquibase à partir des propriétés pour une raison quelconque, alors voici comment j'ai désactivé Liquibase avec @Bean annotation:

@Bean
public SpringLiquibase liquibase() {
  SpringLiquibase liquibase = new SpringLiquibase();
  liquibase.setShouldRun(false);
  return liquibase;
}
6
Dávid Elek

Si vous souhaitez exécuter Liquibase manuellement, vous pouvez utiliser le plugin liquibase maven. Ajoutez simplement quelque chose comme ça à votre pom.xml:

  <plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>${liquibase.version}</version>
    <configuration>
      <changeLogFile>src/main/liquibase/master.xml</changeLogFile>
      <propertyFile>src/main/liquibase/liquibase.properties</propertyFile>
      <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
    </configuration>
  </plugin>

Vous pouvez jeter un oeil à la documentation du plugin pour les détails de configuration.

Et n'utilisez pas la prise en charge de la base de données de Spring Boot, car elle est uniquement destinée à être utilisée lors de l'exécution. Supprimez simplement le démarreur de la base de données et/ou les dépendances associées car vous n'aurez besoin que du plugin maven.

2
Cèsar