如何指定仅对本地已修改的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
相关产品推荐
相关产品推荐

