Gradle中Liquibase如何为diffChangelog覆盖changelogFile属性?
可以实现Gradle Liquibase任务覆盖默认配置
完全可以实现你的需求——把liquibase.properties里的配置作为默认兜底值,同时针对特定Gradle Liquibase任务单独覆盖配置项。
以你提到的diffChangelog任务为例,只需要在Gradle构建脚本(比如build.gradle或build.gradle.kts)中,针对该任务单独指定changelogFile参数即可,其他配置会自动沿用liquibase.properties里的默认值。
你的现有liquibase.properties配置
liquibase.hub.mode=off url=jdbc:postgresql://localhost:5432/foo driver=org.postgresql.Driver changelogFile=src/main/resources/db/db.changelog-master.yml referenceDriver=liquibase.ext.hibernate.database.connection.HibernateDriver referenceUrl=hibernate:spring:com.foo\ ?dialect=org.hibernate.dialect.PostgreSQL10Dialect\ &hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy\ &hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
Gradle构建脚本中的配置示例
Groovy DSL(build.gradle)
plugins { id 'org.liquibase.gradle' version '2.2.0' // 使用对应版本的Liquibase Gradle插件 } liquibase { activities { main { // 留空即可,默认读取liquibase.properties的配置 } } // 针对diffChangelog任务单独覆盖changelogFile tasks.named('diffChangelog') { args = args + ['--changelogFile=src/main/resources/db/db.changelog-diff.yml'] } }
Kotlin DSL(build.gradle.kts)
plugins { id("org.liquibase.gradle") version "2.2.0" } liquibase { activities { create("main") { // 默认读取liquibase.properties配置 } } tasks.named<DiffChangelogTask>("diffChangelog") { args = args + "--changelogFile=src/main/resources/db/db.changelog-diff.yml" } }
配置完成后,执行./gradlew diffChangelog时,生成的变更集会输出到指定的新文件db.changelog-diff.yml,而其他Liquibase任务(比如update)依然会使用liquibase.properties中配置的主变更日志文件。
内容的提问来源于stack exchange,提问作者Jasper
相关产品推荐
相关产品推荐

