0

I'm getting the following error When I try to run Liquibase diff and diffChangeLog.

The fun part is When I try to run ./gradlew update -PrunList='localEnv' It runs without any issues. The same goes for if I run the application, it runs successfully and I can do the crud operations.

The issue is specifically in diffChangeLog

Following are my configurations in build.gradle file.

plugins {
id 'maven-publish'
alias(libs.plugins.liquibase)
}

project.ext {
// Local Env DB
liquibaseLocalEnvUrl = "jdbc:postgresql://localhost:5432/demo"
liquibaseLocalEnvUsername = "postgres"
liquibaseLocalEnvPassword = "admin"
diffLogLocalEnvChangelogFile = "$projectDir/src/main/resources/config/liquibase/changelog/prod/" + new Date().format("yyyyMMddHHmmss") + "_changelog_generated.yml" as GStringImpl
}

liquibase {
activities {
    localEnv {
        driver "org.postgresql.Driver"

        url project.ext.liquibaseLocalEnvUrl

        username project.ext.liquibaseLocalEnvUsername
        password project.ext.liquibaseLocalEnvPassword

        changelogFile "master-prod.yml"

        defaultSchemaName "demo"
        logLevel "debug"
        classpath "$projectDir/src/main/resources/config/liquibase/"
    }

    diffLogLocal {
        driver 'org.postgresql.Driver'
        url project.ext.liquibaseLocalEnvUrl
        username project.ext.liquibaseLocalEnvUsername
        password project.ext.liquibaseLocalEnvPassword
        changelogFile project.ext.diffLogLocalEnvChangelogFile
        referenceUrl "hibernate:spring:com.craas?hibernate.enhanced_id=true&dialect=org.hibernate.dialect.PostgreSQL95Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy"
        defaultSchemaName "demo"
        logLevel "debug"
        classpath "$buildDir/classes/java/main"
    }
}

runList = project.ext.runList
}


 diff.dependsOn compileJava
 diffChangelog.dependsOn compileJava
 generateChangelog.dependsOn compileJava


 dependencies {

// Liquibase plugin config
liquibaseRuntime(libs.sdwan.core)
liquibaseRuntime(libs.sdwan.data)
liquibaseRuntime(libs.liquibase.hibernate5)
liquibaseRuntime(libs.spring.boot.starter.data.jpa)
liquibaseRuntime(libs.postgresql)
liquibaseRuntime(libs.liquibase.core)
liquibaseRuntime(libs.liquibase.groovyDsl)
liquibaseRuntime(libs.picocli)
liquibaseRuntime(libs.snakeyaml)
liquibaseRuntime(sourceSets.main.output)
}

all the dependencies are defined in catalog version file. libs.versions.toml

Toml File:

[versions]
liquibaseCore = "4.22.0"
liquibaseGroovyDsl = "3.0.3"
liquibaseHibernate5 = "4.22.0"
picocli = "4.7.3"
snakeyaml = "2.0"
.............................

[libraries]
# Liquibase
liquibase-core = { module = "org.liquibase:liquibase-core", version.ref = "liquibaseCore" }
liquibase-groovyDsl = { module = "org.liquibase:liquibase-groovy-dsl", version.ref = "liquibaseGroovyDsl" }
liquibase-hibernate5 = { module = "org.liquibase.ext:liquibase-hibernate5", version.ref = "liquibaseHibernate5" }
snakeyaml = { module = "org.yaml:snakeyaml", version.ref = "snakeyaml" }
picocli = { module = "info.picocli:picocli", version.ref = "picocli" }
postgresql = { module = "org.postgresql:postgresql", version='42.6.0'}
spring-boot-starter-data-jpa = { module = "org.springframework.boot:spring-boot-starter-data-jpa"}

I have omitted some libraries to keep it simple.

Before Error Logs: DB Connection:

[2023-05-22 13:54:32] FINE [liquibase.database] Properties:
[2023-05-22 13:54:32] FINE [liquibase.database] Key:'password' Value:'**********'
[2023-05-22 13:54:32] FINE [liquibase.database] Key:'user' Value:'postgres'
[2023-05-22 13:54:32] FINE [liquibase.database] Connecting to the URL:'jdbc:postgresql://localhost:5432/demo' using driver:'org.postgresql.Driver'
[2023-05-22 13:54:32] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.database.jvm.JdbcConnection
[2023-05-22 13:54:32] FINE [liquibase.database] Connection has been created
[2023-05-22 13:54:32] FINE [liquibase.database] Connected to postgres@jdbc:postgresql://localhost:5432/demo
[2023-05-22 13:54:32] FINE [liquibase.database] Setting auto commit to false from true

Hibernate Logs:

[2023-05-22 13:54:32] FINE [liquibase.command] Executing internal command referenceDbUrlConnectionCommandStep
[2023-05-22 13:54:32] FINE [liquibase.database] Properties:
[2023-05-22 13:54:32] FINE [liquibase.database] Connecting to the 
URL:'hibernate:spring:com.craas? hibernate.enhanced_id=true&dialect=org.hibernate.dialect.PostgreSQL95Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy' using driver:'liquibase.ext.hibernate.database.connection.HibernateDriver'
[2023-05-22 13:54:32] FINE [liquibase.database] Connection has been created
[2023-05-22 13:54:32] FINE [liquibase.ext] Connected to null@hibernate:spring:com.craas?hibernate.enhanced_id=true&dialect=org.hibernate.dialect.PostgreSQL95Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
[2023-05-22 13:54:32] FINE [liquibase.ext] Not adjusting the auto commit mode; it is already false
[2023-05-22 13:54:32] INFO [liquibase.ext] Reading hibernate configuration hibernate:spring:com.craas?hibernate.enhanced_id=true&dialect=org.hibernate.dialect.PostgreSQL95Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
[2023-05-22 13:54:33] INFO [liquibase.ext] Found package com.craas

Full Exception

13:54:33.587 [main] ERROR com.zaxxer.hikari.HikariConfig - HikariPool-1 - dataSource or dataSourceClassName or jdbcUrl is required.
13:54:33.592 [main] INFO org.hibernate.service.internal.AbstractServiceRegistryImpl - HHH000369: Error stopping service [class org.hibernate.hikaricp.internal.HikariCPConnectionProvider]
java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariDataSource.close()" because "this.hds" is null
    at org.hibernate.hikaricp.internal.HikariCPConnectionProvider.stop(HikariCPConnectionProvider.java:122)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.stopService(AbstractServiceRegistryImpl.java:399)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.cleanup(EntityManagerFactoryBuilderImpl.java:1449)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1508)
    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:124)
    at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:144)
    at liquibase.command.core.helpers.AbstractDatabaseConnectionCommandStep.createDatabaseObject(AbstractDatabaseConnectionCommandStep.java:75)
    at liquibase.command.core.helpers.ReferenceDbUrlConnectionCommandStep.obtainDatabase(ReferenceDbUrlConnectionCommandStep.java:80)
    at liquibase.command.core.helpers.ReferenceDbUrlConnectionCommandStep.run(ReferenceDbUrlConnectionCommandStep.java:61)
    at liquibase.command.CommandScope.execute(CommandScope.java:212)
    at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:55)
    at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:24)
    at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
    at picocli.CommandLine.access$1500(CommandLine.java:148)
    at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
    at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
    at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
    at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
    at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
    at picocli.CommandLine.execute(CommandLine.java:2170)
    at liquibase.integration.commandline.LiquibaseCommandLine.lambda$null$2(LiquibaseCommandLine.java:383)
    at liquibase.Scope.child(Scope.java:203)
    at liquibase.Scope.child(Scope.java:179)
    at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$3(LiquibaseCommandLine.java:358)
    at liquibase.Scope.child(Scope.java:203)
    at liquibase.Scope.child(Scope.java:179)
    at liquibase.integration.commandline.LiquibaseCommandLine.execute(LiquibaseCommandLine.java:356)
    at liquibase.integration.commandline.LiquibaseCommandLine.main(LiquibaseCommandLine.java:93)

13:54:33.593 [main] DEBUG org.hibernate.service.spi.ServiceBinding - Overriding existing service binding [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
[2023-05-22 13:54:33] INFO [liquibase.command] Command execution complete
[2023-05-22 13:54:33] SEVERE [liquibase.integration] Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
- Caused by: dataSource or dataSourceClassName or jdbcUrl is required.
liquibase.exception.CommandExecutionException: liquibase.exception.DatabaseException: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    at liquibase.command.CommandScope.execute(CommandScope.java:235)
    at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:55)
    at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:24)
    at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
    at picocli.CommandLine.access$1500(CommandLine.java:148)
    at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
    at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
    at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
    at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
    at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
    at picocli.CommandLine.execute(CommandLine.java:2170)
    at liquibase.integration.commandline.LiquibaseCommandLine.lambda$null$2(LiquibaseCommandLine.java:383)
    at liquibase.Scope.child(Scope.java:203)
    at liquibase.Scope.child(Scope.java:179)
    at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$3(LiquibaseCommandLine.java:358)
    at liquibase.Scope.child(Scope.java:203)
    at liquibase.Scope.child(Scope.java:179)
    at liquibase.integration.commandline.LiquibaseCommandLine.execute(LiquibaseCommandLine.java:356)
    at liquibase.integration.commandline.LiquibaseCommandLine.main(LiquibaseCommandLine.java:93)
 Caused by: liquibase.exception.DatabaseException: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    at liquibase.command.core.helpers.AbstractDatabaseConnectionCommandStep.createDatabaseObject(AbstractDatabaseConnectionCommandStep.java:107)
    at liquibase.command.core.helpers.ReferenceDbUrlConnectionCommandStep.obtainDatabase(ReferenceDbUrlConnectionCommandStep.java:80)
    at liquibase.command.core.helpers.ReferenceDbUrlConnectionCommandStep.run(ReferenceDbUrlConnectionCommandStep.java:61)
    at liquibase.command.CommandScope.execute(CommandScope.java:212)
    ... 18 more

 Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:284)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:246)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:223)
    at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:175)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:295)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:252)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:223)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:173)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:127)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1460)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1494)
    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:124)
    at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:144)
    at liquibase.command.core.helpers.AbstractDatabaseConnectionCommandStep.createDatabaseObject(AbstractDatabaseConnectionCommandStep.java:75)
    ... 21 more
 Caused by: org.hibernate.HibernateException: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
    at org.hibernate.hikaricp.internal.HikariCPConnectionProvider.configure(HikariCPConnectionProvider.java:63)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:107)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:255)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:223)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:146)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)
    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:272)
    ... 37 more
 Caused by: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
    at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:1029)
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:77)
    at org.hibernate.hikaricp.internal.HikariCPConnectionProvider.configure(HikariCPConnectionProvider.java:59)
    ... 45 more

0 Answers0