You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mybatis-generator如何生成properties、sql等非Java/XML格式文件?

MyBatis Generator 自定义生成非Java/XML资源文件方案

方案1:拆分Maven构建阶段(最稳定)

把自定义文件生成逻辑从MBG插件中剥离,利用Maven阶段的执行顺序解决路径和目录问题:

  • 先正常配置mybatis-generator-maven-plugin绑定到generate-sources阶段,执行完成后会自动创建target/generated-sources/mybatis-generator目录,所有默认Java、XML文件也已写入完成。
  • 额外配置gmavenplus-plugin(执行Groovy脚本)或exec-maven-plugin(执行自定义Java逻辑),同样绑定到generate-sources阶段,调整<execution>顺序放在MBG插件之后。该阶段可以直接读取Maven内置的${project.build.directory}、${project.basedir}等属性获取项目路径,不需要硬编码。
  • 所有自定义生成的properties、sql、SPI文件直接写入target/generated-sources/mybatis-generator对应路径即可,MBG后续流程不会覆盖该目录下的非自身生成的文件。
  • 如果需要将自定义资源打入最终Jar包,补充如下Maven配置即可:
<build>
  <resources>
    <!-- 原有资源配置保留 -->
    <resource>
      <directory>${project.build.directory}/generated-sources/mybatis-generator</directory>
      <includes>
        <include>**/*.properties</include>
        <include>**/*.sql</include>
        <include>**/META-INF/services/*</include>
      </includes>
    </resource>
  </resources>
</build>

方案2:基于MBG自定义插件实现

如果不想额外引入其他插件,调整自定义插件的逻辑即可实现:

  • 在MBG的配置文件中通过属性注入项目路径,避免硬编码:
<context id="default" targetRuntime="MyBatis3">
  <property name="projectBuildDir" value="${project.build.directory}"/>
  <!-- 原有其他配置保留 -->
</context>

Maven执行时会自动替换${project.build.directory}为实际的target目录路径,自定义插件中可通过context.getProperties().get("projectBuildDir")直接读取。

  • 自定义插件选择contextGenerateEnd回调方法执行文件写入逻辑,该方法在MBG所有默认文件生成、目录创建完成后触发,此时target/generated-sources/mybatis-generator目录已存在,直接写入自定义文件不会被后续流程覆盖。

Git识别问题解决

两种方案的生成文件都保存在target目录下,标准Maven项目默认已将target目录加入.gitignore,不会被Git识别,不需要额外配置清理规则。

内容的提问来源于stack exchange,提问作者Venkata Rahul S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:54:03