父项目执行generate-sources异常:JOOQ代码生成失效且文件被删
解决JOOQ代码生成在父项目执行时的异常问题
我之前也碰到过类似的Maven多模块下JOOQ代码生成的坑,给你几个针对性的排查和解决方向:
1. 先明确指定模块执行命令
在父项目目录执行时,别直接跑mvn generate-sources,而是加上模块参数,让Maven只针对你的目标模块执行构建:
mvn generate-sources -pl mytestmodule
这样Maven会切换到mytestmodule的上下文运行插件,路径和配置逻辑会和你在模块目录单独执行时完全一致,避免上下文错位导致的路径错误。
2. 修复插件目标目录的路径配置
你当前插件里的<directory>用了相对路径src/main/java,当在父项目根目录执行命令时,Maven会默认以父项目根目录为基准路径,导致插件错误地操作父项目的src/main/java目录,甚至误删模块里的已有文件。
修改模块pom.xml里的插件配置,用Maven内置变量${project.basedir}指定模块的绝对路径:
<generator> <target> <packageName>org.jooq.schema</packageName> <directory>${project.basedir}/src/main/java</directory> </target> </generator>
${project.basedir}会精准指向当前模块的根目录,不管你在父项目还是模块目录执行命令,这个路径都不会出错,既能正确生成代码,也不会误删已有文件。
3. 检查父项目的插件配置冲突
如果父项目的pom.xml里存在<pluginManagement>节点,或者直接配置了jooq-codegen-maven插件,可能会覆盖模块的插件配置。请确认父项目里没有对该插件做全局禁用、路径修改等操作,让模块的独立配置完全生效。
4. 用日志验证插件执行逻辑
如果还是有问题,可以在执行命令时加上-X参数查看详细日志:
mvn generate-sources -pl mytestmodule -X
从日志里可以看到插件的实际执行路径、目标目录、配置加载情况,能快速定位到底是哪里出了问题。
内容的提问来源于stack exchange,提问作者Codoscope
相关产品推荐
相关产品推荐

