执行jooq-codegen-maven命令时jOOQ代码生成配置错误求助
解决jOOQ 3.20.3 Maven代码生成配置错误问题
针对你遇到的配置错误,可从以下几个方向排查修复:
1. 修复数据库配置的必填项缺失
jOOQ的PostgresDatabase生成器必须指定要扫描的数据库Schema,否则无法确定要生成哪些表的代码。在<database>节点下添加<inputSchema>(PostgreSQL默认Schema为public):
<generator> <database> <name>org.jooq.meta.postgres.PostgresDatabase</name> <inputSchema>public</inputSchema> <!-- 核心必填项,指定要生成代码的Schema --> <!-- 可选:如需过滤表,可添加includes/excludes,比如只生成user开头的表 --> <!-- <includes>user_.*</includes> --> </database> <target> <packageName>com.example.domain</packageName> <directory>src/main/java_generated</directory> </target> </generator>
2. 统一jOOQ版本,排查依赖冲突
错误提示中提到了jooq-codegen-3.20.1.xsd,但你使用的是3.20.3版本,可能存在依赖版本不一致问题:
- 执行
mvn dependency:tree查看依赖树,确认所有jOOQ相关依赖(包括jooq、jooq-codegen、jooq-meta等)的版本均为3.20.3,无旧版本混入。 - 确保pom.xml中
${jooq.version}变量确实被设置为3.20.3,可在<properties>节点显式声明:<properties> <jooq.version>3.20.3</jooq.version> </properties>
3. 调整插件配置的作用范围
你当前将配置放在了<execution>节点下,直接执行mvn jooq-codegen:generate时可能无法读取到配置。将配置移到<plugin>级别,确保全局生效:
<plugin> <groupId>org.jooq</groupId> <artifactId>jooq-codegen-maven</artifactId> <version>${jooq.version}</version> <!-- 将配置移到plugin级别,直接调用generate目标时可读取 --> <configuration> <jdbc> <driver>org.postgresql.Driver</driver> <url>jdbc:postgresql://localhost:5432/my_db</url> <user>my_user</user> <password>my_password</password> </jdbc> <generator> <database> <name>org.jooq.meta.postgres.PostgresDatabase</name> <inputSchema>public</inputSchema> </database> <target> <packageName>com.example.domain</packageName> <directory>src/main/java_generated</directory> </target> </generator> </configuration> <executions> <execution> <id>jooq-codegen</id> <phase>generate-sources</phase> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin>
完成以上调整后,重新执行mvn jooq-codegen:generate即可正常生成代码。
内容的提问来源于stack exchange,提问作者Adr4m
相关产品推荐
相关产品推荐

