带有 Gradle 和 Kotlin 的 JOOQ 不生成文件
Posted
技术标签:
【中文标题】带有 Gradle 和 Kotlin 的 JOOQ 不生成文件【英文标题】:JOOQ with Gradle and Kotlin do not generate files 【发布时间】:2018-02-10 04:01:42 【问题描述】:我的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
【问题讨论】:
可能类似于***.com/a/43008349/521799 【参考方案1】:我猜您的 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
,但基本相同)。
【讨论】:
大概就是这样。 Here's a similar question where Maven is used以上是关于带有 Gradle 和 Kotlin 的 JOOQ 不生成文件的主要内容,如果未能解决你的问题,请参考以下文章
springboot+kotlin+gradle+jooq的学习笔记
使用 Gradle Kotlin DSL 配置 Jooq 时如何修复“未解析的引用:jdbc”
带有 kotlin 设置问题的 Spring Boot gradle 项目