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?
Ajouter liquibase.enabled=false
dans votre fichier application.properties
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.
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
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
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;
}
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.