Problem with jooq and spring boot with gradle

201 Views Asked by At

I'am using jooq plugin with spring boot in gradle and i have a problem with h2 table. My settings.gradle is:

    pluginManagement {
        plugins {
            id 'java'
            id 'war'
            id 'org.springframework.boot' version '2.7.17'
            id 'io.spring.dependency-management' version '1.0.14.RELEASE'
        }
    }

i should use the 2.7.17 of spring boot to eliminate some cve in older spring boot library.

my build.gradle is

buildscript {
    ext {
        kotlinVersion = "1.7.10"
        postgresqlDriverVersion = '42.4.2'
        coroutineVersion = "1.6.4"
    }
     dependencies {
        classpath 'org.owasp:dependency-check-gradle:8.4.0'
    }
}


plugins {
    id "org.jetbrains.kotlin.jvm" version "${kotlinVersion}"
    id "org.jetbrains.kotlin.plugin.allopen" version "${kotlinVersion}"
    id "org.jetbrains.kotlin.plugin.noarg" version "${kotlinVersion}"
    id "org.jetbrains.kotlin.plugin.jpa" version "${kotlinVersion}"
    id "org.jetbrains.kotlin.plugin.spring" version "${kotlinVersion}"
    id 'org.springframework.boot'
    id 'io.spring.dependency-management'
    id "nu.studer.jooq" version "8.2.1"
    id "org.liquibase.gradle" version "2.0.4"
    id "idea"
    id "eclipse"
    id "com.palantir.docker" version "0.35.0"
}

allOpen {
    annotation("javax.persistence.Entity")
    annotation("javax.persistence.MappedSuperclass")
    annotation("javax.persistence.Embeddable")
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-batch")
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.boot:spring-boot-starter-cache")
    implementation("org.springframework.boot:spring-boot-starter-webflux")
    implementation 'org.jooq:jooq-meta-extensions:3.18.7'
    runtimeOnly 'com.h2database:h2'

    // systemd integration: notifies systemd that the application started successfully (or failed)
    implementation("com.github.jpmsilva.jsystemd:jsystemd-spring-boot-starter:2.0.1")

    // kotlin
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:${coroutineVersion}")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:${coroutineVersion}")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:${coroutineVersion}")

    implementation("io.github.microutils:kotlin-logging-jvm:3.0.0")

    // Jackson Kotlin
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")

    implementation("javax.xml.bind:jaxb-api:2.3.1")
    implementation("javax.activation:activation:1.1")
    implementation("org.eclipse.persistence:org.eclipse.persistence.moxy:2.7.8")

    // Cache provider
    implementation("com.github.ben-manes.caffeine:caffeine:2.9.3")

    // https://mvnrepository.com/artifact/org.hibernate/hibernate-validator
    implementation("org.hibernate:hibernate-validator:6.1.6.Final")
    // https://mvnrepository.com/artifact/org.hibernate/hibernate-validator-annotation-processor
    implementation("org.hibernate:hibernate-validator-annotation-processor:6.1.6.Final")

    implementation('commons-io:commons-io:2.11.0')
    implementation("commons-codec:commons-codec:1.15")


    // Postgresql driver
    implementation("org.postgresql:postgresql:${postgresqlDriverVersion}")

    //jooq
    implementation("org.springframework.boot:spring-boot-starter-jooq")
    jooqGenerator("org.postgresql:postgresql:${postgresqlDriverVersion}")
    jooqGenerator("org.jooq:jooq-meta-extensions")

    // liquibase
    liquibaseRuntime("org.liquibase:liquibase-core:3.8.1")
    liquibaseRuntime("org.liquibase:liquibase-groovy-dsl:2.1.1")
    liquibaseRuntime("org.yaml:snakeyaml:1.15")
    liquibaseRuntime("org.postgresql:postgresql:${postgresqlDriverVersion}")
    liquibaseRuntime("ch.qos.logback:logback-core:1.2.3")
    liquibaseRuntime("ch.qos.logback:logback-classic:1.2.3")
    liquibaseRuntime("org.slf4j:slf4j-api:1.7.25")
    liquibaseRuntime("javax.xml.bind:jaxb-api:2.3.1")

    //embed the webapp in the fat JAR
    runtimeOnly(project(":logs-frontend"))

    // ------- TEST -------
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("org.springframework.batch:spring-batch-test")
    testImplementation("io.mockk:mockk:1.7.15")
    testImplementation("net.bytebuddy:byte-buddy:1.9.2")
    testImplementation("net.bytebuddy:byte-buddy-agent:1.9.2")
    testImplementation "org.junit.jupiter:junit-jupiter-api:5.3.1"
    testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.3.1")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.3.1")
    testRuntimeOnly("org.junit.vintage:junit-vintage-engine:5.3.1")

    annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
}

compileJava.dependsOn(processResources)

compileKotlin {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

compileTestKotlin {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

tasks.named('check') {
    dependsOn 'dependencyCheckAnalyze'
}


jooq {
    // use jOOQ version defined in Spring Boot
    version = dependencyManagement.importedProperties['jooq.version']

    configurations {
        main {
            generationTool {
                generator {
                    name = "org.jooq.codegen.KotlinGenerator"

                    database {
                        name = "org.jooq.meta.extensions.ddl.DDLDatabase"
                        properties {
                            property {
                                key = 'scripts'
                                value = 'src/main/resources/db/changelog/main/*.sql'
                            }
                            property {
                                key = 'sort'
                                value = 'alphanumeric'
                            }
                            property {
                                key = 'defaultNameCase'
                                value = 'lower'
                            }
                        }
                        includes = '.*'
                        excludes = 'INFORMATION_SCHEMA.DOMAINS'
                    }

                    generate {
                        fluentSetters = true
                        pojos = true
                        javaTimeTypes = true
                    }
                    target {
                        packageName = "fr.logs.jooq"
                    }
                }
            }
        }
    }
}

tasks.named('generateJooq').configure {
    // make jOOQ task participate in incremental builds (which is also a prerequisite for participating in build caching)
    allInputsDeclared = true

    // make jOOQ task participate in build caching
    outputs.cacheIf { true }
}

compileKotlin.dependsOn(tasks.named('generateJooq'))


bootJar {
    dependsOn(":logs-frontend:webjar")
    archiveFileName = "testjars-${rootProject.version}.jar"
    exclude("**/application*.yaml", "**/*.jks")

    launchScript()
}

bootJarMainClassName {
    dependsOn(":logs-frontend:webjar")
}
apply plugin: 'org.owasp.dependencycheck'

dependencyCheck {
    failOnError=true
    failBuildOnCVSS = 1
}

but when try the command gradlew generateJooq i have the error below:

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Precision ("2147483647") must be between "1" and "1000000000" inclusive; SQL statement: select INFORMATION_SCHEMA.DOMAINS.DOMAIN_SCHEMA, INFORMATION_SCHEMA.DOMAINS.DOMAIN_NAME, INFORMATION_SCHEMA.DOMAINS.TYPE_NAME, INFORMATION_SCHEMA.DOMAINS.PRECISION, INFORMATION_SCHEMA. DOMAINS.SCALE, INFORMATION_SCHEMA.DOMAINS.IS_NULLABLE, INFORMATION_SCHEMA.DOMAINS.COLUMN_DEFAULT, INFORMATION_SCHEMA.DOMAINS.CHECK_CONSTRAINT from INFORMATION_SCHEMA.DOMAINS where (INF ORMATION_SCHEMA.DOMAINS.DOMAIN_SCHEMA in (cast(? as varchar(2147483647)), cast(? as varchar(2147483647))) and INFORMATION_SCHEMA.DOMAINS.TYPE_NAME <> 'ENUM') order by INFORMATION_SCHEM A.DOMAINS.DOMAIN_SCHEMA, INFORMATION_SCHEMA.DOMAINS.DOMAIN_NAME [90150-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:632) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.get(DbException.java:223) at org.h2.command.Parser.getInvalidPrecisionException(Parser.java:6325) at org.h2.command.Parser.readIfDataType1(Parser.java:6285) at org.h2.command.Parser.readIfDataType(Parser.java:6087) at org.h2.command.Parser.parseColumnWithType(Parser.java:6069) at org.h2.command.Parser.readTermWithoutIdentifier(Parser.java:5107) at org.h2.command.Parser.readTerm(Parser.java:4901) at org.h2.command.Parser.readFactor(Parser.java:3398) at org.h2.command.Parser.readSum(Parser.java:3385) at org.h2.command.Parser.readConcat(Parser.java:3350) at org.h2.command.Parser.readCondition(Parser.java:3132) at org.h2.command.Parser.readExpression(Parser.java:3053) at org.h2.command.Parser.readInPredicate(Parser.java:3277) at org.h2.command.Parser.readConditionRightHandSide(Parser.java:3167) at org.h2.command.Parser.readCondition(Parser.java:3144) at org.h2.command.Parser.readExpression(Parser.java:3053) at org.h2.command.Parser.readTermWithoutIdentifier(Parser.java:4990) at org.h2.command.Parser.readTerm(Parser.java:4901) at org.h2.command.Parser.readFactor(Parser.java:3398) at org.h2.command.Parser.readSum(Parser.java:3385) at org.h2.command.Parser.readConcat(Parser.java:3350) at org.h2.command.Parser.readCondition(Parser.java:3132) at org.h2.command.Parser.readExpressionWithGlobalConditions(Parser.java:3043) at org.h2.command.Parser.parseSelect(Parser.java:2881) at org.h2.command.Parser.parseQueryPrimary(Parser.java:2762) at org.h2.command.Parser.parseQueryTerm(Parser.java:2633) at org.h2.command.Parser.parseQueryExpressionBody(Parser.java:2612) at org.h2.command.Parser.parseQueryExpressionBodyAndEndOfQuery(Parser.java:2605) at org.h2.command.Parser.parseQueryExpression(Parser.java:2598) at org.h2.command.Parser.parseQuery(Parser.java:2567) at org.h2.command.Parser.parsePrepared(Parser.java:724) at org.h2.command.Parser.parse(Parser.java:689) at org.h2.command.Parser.parse(Parser.java:661) at org.h2.command.Parser.prepareCommand(Parser.java:569) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:554) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) at org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:92) at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:288) at org.jooq.impl.ProviderEnabledConnection.prepareStatement(ProviderEnabledConnection.java:109) at org.jooq.impl.SettingsEnabledConnection.prepareStatement(SettingsEnabledConnection.java:73) at org.jooq.impl.AbstractResultQuery.prepare(AbstractResultQuery.java:262) at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:342) ... 15 more

But it i don't have the problem with the 2.6.0 spring boot version.

Does anyone has an idea? Thank's!

0

There are 0 best solutions below