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

如何指定仅对本地已修改的VCS变更文件运行OpenRewrite?

能否仅针对VCS变更文件运行OpenRewrite?

当然可以,OpenRewrite支持只对版本控制系统里已变更的文件执行重构操作,和你提到的IDE针对变更文件处理的逻辑一致。

命令行方式

用OpenRewrite CLI工具时,直接加--changed-files-only参数就能实现:

rewrite run --changed-files-only

这个参数会自动检测当前分支相对默认基准分支(origin/main)的变更文件,只在这些文件上跑指定的重构规则。要是需要自定义基准分支,比如origin/develop,可以搭配--base-branch参数:

rewrite run --changed-files-only --base-branch origin/develop

构建插件方式

Maven

在pom.xml的OpenRewrite插件配置里,添加<changedFilesOnly>true</changedFilesOnly>:

<plugin>
    <groupId>org.openrewrite.maven</groupId>
    <artifactId>rewrite-maven-plugin</artifactId>
    <version>5.40.0</version>
    <configuration>
        <changedFilesOnly>true</changedFilesOnly>
        <!-- 可选:自定义基准分支 -->
        <baseBranch>origin/develop</baseBranch>
    </configuration>
</plugin>

之后执行mvn rewrite:run就只会处理变更文件。

Gradle

在build.gradle的OpenRewrite扩展中设置changedFilesOnly = true:

rewrite {
    activeRecipe("org.openrewrite.java.cleanup.Cleanup")
    changedFilesOnly = true
    // 可选:自定义基准分支
    baseBranch = "origin/develop"
}

执行gradle rewriteRun即可生效。

注意:这个功能依赖本地正确配置了Git这类VCS,且仓库状态正常,能正确识别变更文件。未被VCS追踪的新文件,默认不会被纳入处理范围,得先执行git add这类命令把文件加入追踪才行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:06:01