找不到JOOQ Codegen策略类
我正在尝试将 -pojo
后缀添加到我生成的Jooq Pojos。
策略实施非常简单:
package my.app.jooq.strategy
import org.jooq.codegen.DefaultGeneratorStrategy
import org.jooq.codegen.GeneratorStrategy
import org.jooq.codegen.GeneratorStrategy.Mode.POJO
import org.jooq.meta.Definition
class MyGeneratorStrategy : DefaultGeneratorStrategy() {
override fun getJavaClassName(definition: Definition, mode: GeneratorStrategy.Mode): String {
return when (mode) {
POJO -> super.getJavaClassName(definition, mode) + "Pojo"
else -> super.getJavaClassName(definition, mode)
}
}
}
但是Codegen只是拒绝接收它。 ( classNotFoundException
)。
根据 https://groups.google.com/g/g/jooq-user/ c/lm5iorhnhjw :
您只需要为该策略类创建一个单独的项目/模块,才能创建一个类似的依赖图:
- 代码生成模块...取决于
- 策略模块...取决于
- JOOQ库
,所以我做到了... JOOQ不在乎。
PM org.jooq.tools.JooqLogger error
SEVERE: Error in file: /home/user/code/my-app/backend/db/build/tmp/generateMyAppJooq/config.xml. Error : my.app.jooq.strategy.MyGeneratorStrategy
java.lang.ClassNotFoundException: my.app.jooq.strategy.MyGeneratorStrategy
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at org.jooq.codegen.GenerationTool.loadClass0(GenerationTool.java:1075)
at org.jooq.codegen.GenerationTool.loadClass(GenerationTool.java:1005)
at org.jooq.codegen.GenerationTool.run0(GenerationTool.java:405)
at org.jooq.codegen.GenerationTool.run(GenerationTool.java:233)
at org.jooq.codegen.GenerationTool.generate(GenerationTool.java:228)
at org.jooq.codegen.GenerationTool.main(GenerationTool.java:200)
这是建立密码符模块的方式:
plugins {
id 'nu.studer.jooq' version "${plugin_jooq}"
id 'io.spring.dependency-management'
}
dependencyManagement {
imports {
mavenBom SpringBootPlugin.BOM_COORDINATES
mavenBom "org.jetbrains.kotlin:kotlin-bom:${fw_kotlin}"
}
}
dependencies {
api "org.postgresql:postgresql"
implementation project(":backend-jooq-config")
api "org.springframework.boot:spring-boot-starter-jooq"
implementation "org.jooq:jooq-meta"
implementation "org.jooq:jooq-codegen"
jooqGenerator "org.postgresql:postgresql"
}
jooq {
version = dependencyManagement.importedProperties['jooq.version']
edition = nu.studer.gradle.jooq.JooqEdition.OSS
configurations {
myApp {
generateSchemaSourceOnCompilation = true
generationTool {
logging = org.jooq.meta.jaxb.Logging.WARN
jdbc {
driver = 'org.postgresql.Driver'
url = 'jdbc:postgresql://localhost:5432/myapp'
user = 'user'
password = 'password'
properties {
property {
key = 'PAGE_SIZE'
value = 2048
}
}
}
generator {
name = 'org.jooq.codegen.DefaultGenerator'
strategy {
name = 'my.app.jooq.strategy.MyGeneratorStrategy'
}
database {
name = 'org.jooq.meta.postgres.PostgresDatabase'
inputSchema = 'public'
includes = '.*'
excludes = ''
}
generate {
daos = true
springAnnotations = true
}
target {
directory = 'src/main/java'
packageName = 'my.app.db'
}
}
}
}
}
}
我看不到我在做什么错。
是的,策略正在汇编:
find .. -name "*GeneratorStrategy*"
../backend/jooq-config/build/classes/kotlin/main/my/app/jooq/strategy/MyGeneratorStrategy.class
../backend/jooq-config/build/classes/kotlin/main/my/app/jooq/strategy/MyGeneratorStrategy$WhenMappings.class
../backend/jooq-config/src/main/kotlin/my/app/jooq/strategy/MyGeneratorStrategy.kt
我该如何解决?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
修复您的配置
,这里有一个有关如何设置第三方代码生成插件以使用自定义策略的示例:
如您所见,依赖关系被指定为:
不
使用声明性配置代替
此类简单情况,JOOQ还提供了一个名为“ <”的配置,称为“ < a href =“ https://www.jooq.org/doc/latest/manual/code-generation/codegen-matcherstrategy/”他们是其他的。例如
Fixing your configuration
There's an example here on how to set up this third party code generation plugin to use a custom strategy:
https://github.com/etiennestuder/gradle-jooq-plugin/tree/master/example/configure_custom_generator_strategy
As you can see, the dependency is specified as:
Not
Using a declarative configuration instead
For such simple cases, jOOQ also offers an out-of-the-box configuration called "matcher strategy," where it matches names and replaces them by something else. E.g.