如何配置pom.xml将jOOQ生成类输出到两个不同的包路径
问题根因
你当前配置失效的核心原因是:jOOQ的jooq-codegen-maven插件单组执行配置下仅支持一个<target>规则,重复声明的<target>会被后者覆盖,因此只有第二个包路径的生成规则生效。
正确配置方法
你需要为插件配置两个独立的<execution>执行节点,每个节点对应一套生成规则,分别指定不同的包路径即可,配置示例如下:
<plugin> <groupId>org.jooq</groupId> <artifactId>jooq-codegen-maven</artifactId> <version>3.15.3</version> <executions> <!-- 第一个包的生成配置 --> <execution> <id>generate-jooq-package-one</id> <phase>generate-sources</phase> <goals> <goal>generate</goal> </goals> <configuration> <jdbc> <!-- 你的数据库连接配置,共用同一份schema的话两个execution这里配一样的就行 --> <driver>com.mysql.cj.jdbc.Driver</driver> <url>jdbc:mysql://localhost:3306/your_db</url> <user>root</user> <password>your_password</password> </jdbc> <generator> <database> <inputSchema>your_schema_name</inputSchema> <!-- 后续拆微服务时,可以在这里加includes/excludes过滤不同包需要的表 --> </database> <target> <packageName>myProject.packageOne.Dao</packageName> <directory>target/generated-sources/jooq-package-one</directory> </target> </generator> </configuration> </execution> <!-- 第二个包的生成配置 --> <execution> <id>generate-jooq-package-two</id> <phase>generate-sources</phase> <goals> <goal>generate</goal> </goals> <configuration> <jdbc> <!-- 和上面一致的数据库连接配置即可 --> <driver>com.mysql.cj.jdbc.Driver</driver> <url>jdbc:mysql://localhost:3306/your_db</url> <user>root</user> <password>your_password</password> </jdbc> <generator> <database> <inputSchema>your_schema_name</inputSchema> </database> <target> <packageName>myProject.packageTwo.Dao</packageName> <directory>target/generated-sources/jooq-package-two</directory> </target> </generator> </configuration> </execution> </executions> </plugin>
补充注意事项
- 注意
<packageName>需使用Java包标准的点分隔写法,不要使用路径斜杠,插件会自动转换为对应的文件目录结构 - 两个
<execution>的id必须唯一,避免配置冲突 - 两个生成规则的输出目录
directory建议分开设置,避免文件互相覆盖 - 后续拆分微服务时,只需要在各自execution的
<database>节点下通过<includes>、<excludes>标签过滤对应微服务需要的表,就能实现代码拆分
内容的提问来源于stack exchange,提问作者Andrew Kachalin
相关产品推荐
相关产品推荐

