带有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
但基本相同)。