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
答
我猜你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) –
可能类似于https://*.com/a/43008349/521799 –