带有 Gradle 和 Kotlin 的 JOOQ 不生成文件

Posted

技术标签:

【中文标题】带有 Gradle 和 Kotlin 的 JOOQ 不生成文件【英文标题】:JOOQ with Gradle and Kotlin do not generate files 【发布时间】:2018-02-10 04:01:42 【问题描述】:

我的build.gradle.kts 中有以下 gradle 任务。它应该从我的 JPA 实体生成文件。但是,运行此任务时,成功后不会生成任何文件或目录。

task(name = "generateJooq") 
    doLast 
        val configuration = Configuration().apply 

            generator = Generator().apply 
                database = Database().apply 
                    name = "org.jooq.util.jpa.JPADatabase"
                    properties = listOf(Property().apply 
                        key = "packages"
                        value = "com.example.sample"
                    )
                

                target = Target().apply 
                    packageName = "com.example.jooq"
                    directory = "src/generated/java"
                
            
        

        GenerationTool.generate(configuration)
    

这是我生活在包裹com.example.sample 下的实体。请注意,我用 Java 编写了这个实体。

@Entity
public class Book 

    @Id
    private String id;

    @Column
    private String title;

有以下日志

./gradlew clean generateJooq      

BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed

【问题讨论】:

可能类似于***.com/a/43008349/521799 【参考方案1】:

我猜您的 Book 课程在 src/main/java 中,对吗?

现在您希望JOOQ 可以使用该课程,对吗?在编译 src/main/java 之前定义 Gradle buildscript 类加载器(加载 gradle 任务)存在一些鸡或蛋问题。

您需要将自定义类加载器传递给JOOQ(例如URLClassloader)。然后JOOQ 可以使用类加载器来加载类(希望JOOQ API 支持这一点)。您可以使用sourceSets.main.runtimeClasspath 创建URL 的数组。

我看到GenerationTool 有一个setClassLoader(..) 方法here。我猜你会这样称呼它

请参阅here 了解类似的解决方案(使用Reflections 而不是JOOQ,但基本相同)。

【讨论】:

大概就是这样。 Here's a similar question where Maven is used

以上是关于带有 Gradle 和 Kotlin 的 JOOQ 不生成文件的主要内容,如果未能解决你的问题,请参考以下文章

springboot+kotlin+gradle+jooq的学习笔记

使用 Gradle Kotlin DSL 配置 Jooq 时如何修复“未解析的引用:jdbc”

带有 kotlin 设置问题的 Spring Boot gradle 项目

无法解析 jOOQ 生成的类 TableOptions

jooq, simpleflatmapper, kotlin 映射

新的 jooq/gradle 配置不生成任何 jooq 类