JOOQ与Gradle和Kotlin不生成文件

问题描述:

我在我的build.gradle.kts中有以下gradle任务。它应该从我的JPA实体生成文件。但是,在运行此任务时,一旦成功,将不会生成文件或目录。JOOQ与Gradle和Kotlin不生成文件

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 
+0

可能类似于https://*.com/a/43008349/521799 –

我猜你Book类是src/main/java正确的?

现在你想让这个类可用于JOOQ对不对?在编译src/main/java之前定义了Gradle buildscript classloader(它加载gradle任务)时出现了一些鸡或egg问题。

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

我看到GenerationTool有一个setClassLoader(..)方法here。我猜你会打电话给

查看here对于类似的解决方案(使用Reflections而不是JOOQ,但基本相同)。

+0

可能就是这样。 [这里是使用Maven的类似问题](https://*.com/a/43008349/521799) –