JOOQ с Gradle и Kotlin не генерируют файлы

У меня есть следующая задача градиента в моей build.gradle.kts . Предполагается генерировать файлы из моих сущностей 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 ? Есть немного проблемы с цыпленком или яйцом, где классный загрузчик класса buildscript (который загружает задачи градиента) определяется до компиляции src/main/java .

Вам нужно будет передать пользовательский загрузчик классов в JOOQ (например, URLClassloader). JOOQ может затем использовать загрузчик классов для загрузки классов (надеюсь, это JOOQ API). Вы можете использовать sourceSets.main.runtimeClasspath для создания массива URL .

Я вижу, что GenerationTool имеет setClassLoader(..) . Я предполагаю, что вы назовете это

См. Здесь аналогичное решение (используя Reflections а не JOOQ но в основном то же самое).