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

OpenRewrite多模块Maven项目YAML配方位置及调用问题排查

多模块Maven项目中Rewrite YAML配方的正确存放位置
  • 配方所在模块需为标准Java Jar模块:项目A的functional模块不能是<packaging>pom</packaging>类型,必须使用默认的jar打包类型,确保资源文件能被正确打包进Jar包。
  • 配方文件路径必须严格遵循src/main/resources/META-INF/rewrite/Example.yml,你当前的路径是正确的,但需确认Jar包解压后该文件确实存在且内容无格式错误。
  • 项目B必须显式在rewrite-maven-plugin的依赖中声明项目A的functional模块:Rewrite插件只会扫描自身依赖中的配方文件,仅在项目B全局依赖中声明无法被插件识别。
  • 确保YAML文件中的name字段与激活的配方ID完全一致,示例如下:
name: xxxxx.functional.Example
recipeList:
  # 此处填写具体重构步骤
rewrite:discover命令的调试建议
  • 验证依赖传递:执行mvn dependency:tree,搜索项目A的functional模块,确认项目B的rewrite-maven-plugin依赖中包含该模块,且版本与已安装的一致。
  • 开启调试日志执行命令:mvn rewrite:discover -X,重点关注以下日志内容:
    • 插件加载的依赖Jar列表,确认项目A的functional Jar在其中
    • 扫描META-INF/rewrite/目录的日志,查看是否检测到Example.yml
    • 任何与配方加载相关的错误提示(如YAML解析失败、配方ID冲突)
  • 直接检查本地仓库Jar包:找到项目Afunctional模块在本地Maven仓库的Jar文件,解压后确认META-INF/rewrite/Example.yml存在且内容正确。
  • 确认插件配置正确性:检查项目B的rewrite-maven-plugin配置,确保<activeRecipes>中的配方ID与YAML文件的name完全匹配,且依赖声明正确,示例配置如下:
<plugin>
  <groupId>org.openrewrite.maven</groupId>
  <artifactId>rewrite-maven-plugin</artifactId>
  <version>4.44.0</version>
  <configuration>
    <activeRecipes>
      <recipe>xxxxx.functional.Example</recipe>
    </activeRecipes>
  </configuration>
  <dependencies>
    <dependency>
      <groupId>你的项目A groupId</groupId>
      <artifactId>functional</artifactId>
      <version>对应版本号</version>
    </dependency>
  </dependencies>
</plugin>
  • 重新安装项目A:在项目A根目录执行mvn clean install,确保最新的Jar包包含配方文件并同步到本地仓库。

内容的提问来源于stack exchange,提问作者Christopher Helck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:17:05