liquibaseDiffChangelog gradle 任务因 java.lang.UnsupportedOperationException 出错:应用程序必须提供 JDBC 连接
liquibaseDiffChangelog gradle task erring out with java.lang.UnsupportedOperationException: The application must supply JDBC connections
我正在尝试为 spring 带有嵌入式 postgressql 后端(基于磁盘)的启动微服务生成 liquibase 更改日志。下面的命令
./gradlew -PexcludeLog4j=true liquibaseDiffChangelog -PrunList=diffLog -PliquibaseTimestamp=1620929423 -Purl="jdbc:h2:mem:~/workspace/test/testms/build/h2db"
总是犯错
java.lang.UnsupportedOperationException: The application must supply
JDBC connections
at org.hibernate.engine.jdbc.connections.internal.UserSuppliedConnectionProviderImpl.getConnection(UserSuppliedConnectionProviderImpl.java:44)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.(InFlightMetadataCollectorImpl.java:176)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:127)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255)
at liquibase.ext.hibernate.database.HibernateEjb3Database.buildMetadataFromPath(HibernateEjb3Database.java:59)
at liquibase.ext.hibernate.database.HibernateDatabase.buildMetadata(HibernateDatabase.java:143)
at liquibase.ext.hibernate.database.HibernateDatabase.setConnection(HibernateDatabase.java:83)
at liquibase.database.DatabaseFactory.findCorrectDatabaseImplementation(DatabaseFactory.java:121)
at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:141)
at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:96)
at liquibase.integration.commandline.Main.createReferenceDatabaseFromCommandParams(Main.java:2107)
at liquibase.integration.commandline.Main.doMigration(Main.java:1511)
at liquibase.integration.commandline.Main.lambda$run[=14=](Main.java:367)
at liquibase.Scope.lambda$child[=14=](Scope.java:160)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:159)
at liquibase.Scope.child(Scope.java:138)
at liquibase.integration.commandline.Main.run(Main.java:366)
at liquibase.integration.commandline.Main.run(Main.java:196)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:145)
at liquibase.integration.commandline.Main.run(Main.java:196)
at liquibase.integration.commandline.Main.main(Main.java:158) BEST PRACTICE: The changelog generated by
diffChangeLog/generateChangeLog should be inspected for correctness
and completeness before being deployed. Liquibase command
'diffChangeLog' was executed successfully.
有什么想法吗?
为了生成增量差异,我们需要在 liquibaseDiffChangelog
之前先 运行 任务 liquibaseUpdate
添加了以下扩展
task generateLiquibaseChangelog {
dependsOn 'clean'
dependsOn 'liquibaseUpdate'
dependsOn 'liquibaseDiffChangeLog'
tasks.findByName('liquibaseUpdate').mustRunAfter 'clean'
tasks.findByName('liquibaseDiffChangeLog').mustRunAfter 'liquibaseUpdate'
project.ext."excludeLog4j"="true"
project.ext."runList"="diffLog"
project.ext."liquibaseTimestamp"=getTimestamp()
}
def getTimestamp() {
return new Date().format('yyyyMdHHms')
}
我正在尝试为 spring 带有嵌入式 postgressql 后端(基于磁盘)的启动微服务生成 liquibase 更改日志。下面的命令
./gradlew -PexcludeLog4j=true liquibaseDiffChangelog -PrunList=diffLog -PliquibaseTimestamp=1620929423 -Purl="jdbc:h2:mem:~/workspace/test/testms/build/h2db"
总是犯错
java.lang.UnsupportedOperationException: The application must supply JDBC connections at org.hibernate.engine.jdbc.connections.internal.UserSuppliedConnectionProviderImpl.getConnection(UserSuppliedConnectionProviderImpl.java:44) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.(InFlightMetadataCollectorImpl.java:176) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:127) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) at liquibase.ext.hibernate.database.HibernateEjb3Database.buildMetadataFromPath(HibernateEjb3Database.java:59) at liquibase.ext.hibernate.database.HibernateDatabase.buildMetadata(HibernateDatabase.java:143) at liquibase.ext.hibernate.database.HibernateDatabase.setConnection(HibernateDatabase.java:83) at liquibase.database.DatabaseFactory.findCorrectDatabaseImplementation(DatabaseFactory.java:121) at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:141) at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:96) at liquibase.integration.commandline.Main.createReferenceDatabaseFromCommandParams(Main.java:2107) at liquibase.integration.commandline.Main.doMigration(Main.java:1511) at liquibase.integration.commandline.Main.lambda$run[=14=](Main.java:367) at liquibase.Scope.lambda$child[=14=](Scope.java:160) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:159) at liquibase.Scope.child(Scope.java:138) at liquibase.integration.commandline.Main.run(Main.java:366) at liquibase.integration.commandline.Main.run(Main.java:196) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:145) at liquibase.integration.commandline.Main.run(Main.java:196) at liquibase.integration.commandline.Main.main(Main.java:158) BEST PRACTICE: The changelog generated by diffChangeLog/generateChangeLog should be inspected for correctness and completeness before being deployed. Liquibase command 'diffChangeLog' was executed successfully.
有什么想法吗?
为了生成增量差异,我们需要在 liquibaseDiffChangelog
liquibaseUpdate
添加了以下扩展
task generateLiquibaseChangelog {
dependsOn 'clean'
dependsOn 'liquibaseUpdate'
dependsOn 'liquibaseDiffChangeLog'
tasks.findByName('liquibaseUpdate').mustRunAfter 'clean'
tasks.findByName('liquibaseDiffChangeLog').mustRunAfter 'liquibaseUpdate'
project.ext."excludeLog4j"="true"
project.ext."runList"="diffLog"
project.ext."liquibaseTimestamp"=getTimestamp()
}
def getTimestamp() {
return new Date().format('yyyyMdHHms')
}