【问题标题】:JOOQ with Gradle and Kotlin do not generate files带有 Gradle 和 Kotlin 的 JOOQ 不生成文件
【发布时间】: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

【问题讨论】:

标签: java jpa gradle kotlin jooq


【解决方案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,但基本相同)。

【讨论】:

猜你喜欢
  • 2020-07-26
  • 2016-01-28
  • 2018-12-27
  • 2020-02-25
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
相关资源
最近更新 更多