带有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 classloader(加载gradle任务)时,有一些鸡或egg的问题。

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

我看到GenerationTool 在这里有一个setClassLoader(..)方法。 我猜你会打电话的

在这里看到一个类似的解决方案(使用Reflections而不是JOOQ但基本相同)。