java - java.lang.ClassNotFoundException:jooq代码生成任务的org.postgresql.Driver

标签 java gradle jooq jooq-codegen-maven

我正在使用jooq-hikari-hibernate-postgres作为后端来实现java-spring-boot项目(jdk11,spring boot 2.3.0.RELEASE)。

我已经使用flyway创建了表格。

我已经在 build.gradle 中创建了任务名称“generateJooqRepo” ,以生成存储库的Java代码。任务正在运行,但是失败,并显示错误消息:

Execution failed for task ':generateJooqRepo'.
  > java.lang.ClassNotFoundException: org.postgresql.Driver

对我在做什么错有任何见解?

build.gradle:
import org.jooq.codegen.*

plugins {
    id 'org.springframework.boot' version '2.3.0.RELEASE'
    id 'org.flywaydb.flyway' version '6.4.4'
    id "nu.studer.jooq" version "4.2"
}

apply plugin: 'io.spring.dependency-management'
apply plugin: 'application'
apply plugin: 'maven'
apply plugin: 'jacoco'
apply plugin: 'idea'
apply plugin: 'nu.studer.jooq'

configurations {
    deployerJars
}


sourceCompatibility = '11.0.1'
targetCompatibility = '11.0.1'

repositories {
    // Use jcenter for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
    mavenCentral()

}



dependencies {

    //Spring Dependencies
    implementation 'org.springframework.boot:spring-boot-starter-actuator:2.3.0.RELEASE'
    implementation 'org.springframework.boot:spring-boot-starter-web:2.3.0.RELEASE'

    //postges
    jooqRuntime  'org.postgresql:postgresql:42.2.14'
    implementation 'org.postgresql:postgresql:42.2.14'

    //The gradle-jooq-plugin needs dependencies in a separate configuration.
    // It uses the jooqRuntime configuration to detect the needed dependencies, it doesn't use the compile or implementation configuration.
    jooqRuntime group: 'org.jooq', name: 'jooq-meta-extensions', version: '3.13.2'

    //flyway
    compile 'org.flywaydb:flyway-core:6.4.4'

    //jooq dependency
    implementation 'org.springframework.boot:spring-boot-starter-jooq:2.3.0.RELEASE'
    compile 'org.jooq:jooq:3.13.2'
    compile 'org.jooq:jooq-meta:3.13.2'
    compile 'org.jooq:jooq-codegen:3.13.2'


    // This dependency is found on compile classpath of this component.
    implementation 'org.apache.commons:commons-lang3:3.9'
}

group = 'com.ringo.tapos.service'
version = '1.0.0-SNAPSHOT'
mainClassName = "com.ringo.tapos.service.Application"


// Use your favourite XML builder to construct the code generation configuration file
// ----------------------------------------------------------------------------------
task generateJooqRepo {
    doLast {
        def writer = new StringWriter()
        def xml = new groovy.xml.MarkupBuilder(writer)
                .configuration('xmlns': 'http://www.jooq.org/xsd/jooq-codegen-3.13.0.xsd') {
                    jdbc() {
                        driver('org.postgresql.Driver')
                        url('jdbc:postgresql://localhost:5432/postgres')
                        user('postgres')
                        password('postgres')
                        schema('tapos')
                    }
                    generator() {
                        database() {
                        }
                        generate([:]) {
                            pojos true
                            daos true
                            relations true
                            deprecated false
                            records true
                            //immutablePojos false
                        }
                        target() {
                            packageName('com.ringo.tapos.service.repositories')
                            directory('src/main/java')
                        }
                    }
                }
        GenerationTool.generate(writer.toString())
    }
}

最佳答案

您还应该将postgres驱动程序依赖性添加到jooqRuntime配置中jooqRuntime 'org.postgresql:postgresql:42.2.14'
更新:
如果要在nu.studer.jooq插件提供的任务之外的gradle脚本中使用postgres驱动程序,则应将其添加到buildscript类路径中

buildscript {
    dependencies {
        classpath  'org.postgresql:postgresql:42.2.14'
    }
}

关于java - java.lang.ClassNotFoundException:jooq代码生成任务的org.postgresql.Driver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62415764/

相关文章:

java - 单词出现方法不计数

java - 搜索 String 实例的 HashMap 值

c - 用gradle构建c程序

java - 使用 JOOQ formatJSON 获取列 :value pairs

java - 使用 jOOQ 将枚举值插入到未知表中

java - 基于 JPanel 位置和大小的屏幕截图

java - Gradle 的 Java 项目 API 不提供在 project.sync 中保留 API 的访问权限

dependencies - 指定构建顺序依赖项

java - 在选择查询 jooq 中使用 java 方法

java - PMD 多个规则集通过构建,但单个规则集构建失败