java - JOOQ with Gradle 和 Kotlin 不生成文件

标签 java jpa gradle kotlin jooq

我的 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

最佳答案

我猜你的 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 但基本相同)。

关于java - JOOQ with Gradle 和 Kotlin 不生成文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45994293/

相关文章:

java - 无法使用 java.io.IOException : setDataSourceFD failed. : status=0x80000000 in 2. 3.3 android 平板电脑创建媒体播放器

java - 我无法在 Android Fragment 中使用 textview 填充 gridview

java - Hibernate Annotations - 字段访问和属性访问哪个更好?

java - 我们可以有选择地获取 Hibernate 中关联连接对象的列吗?

android - 添加改造实现依赖项时出现错误gradle [无法从/data/app/打开dex文件]

java - 停止在 ssh 中运行的 java 文件

java - 没有所有属性的 hibernate 映射文件

java - 在 mysql(或 JPA)中插入多行

c++ - 使用 Gradle cpp 插件生成 DLL

android-studio - Gradle:构建后如何通过 FTP 上传发布的 APK 文件