如何为OpenRewrite的OrderImports定义导入排序样式?求rewrite.yml示例
使用org.openrewrite.java.OrderImports的rewrite.yml示例
下面是一个完整的rewrite.yml配置示例,用来自定义Java导入语句的排序规则,适配org.openrewrite.java.OrderImports插件:
type: specs.openrewrite.org/v1beta/recipe name: com.yourorg.CustomImportOrder displayName: 自定义Java导入排序规则 description: 按照自定义分组规则排序Java导入,并清理未使用的导入 recipeList: - org.openrewrite.java.OrderImports: # 普通导入的分组优先级(从上到下排列) importOrder: - "" # 未匹配到其他分组的导入放在此兜底分组 - "java." - "javax." - "com.yourorg." - "org.springframework." # 将静态导入与普通导入分为独立块 separateStaticImports: true # 静态导入的分组顺序(仅当separateStaticImports为true时生效) staticImportOrder: - "java." - "javax." - "" # 同一分组内的导入按字母顺序排序 sortSamePackageImports: true # 自动移除未使用的导入 removeUnusedImports: true
关键配置项说明
importOrder:定义普通导入的分组顺序,分组按列表先后顺序排列。空字符串""是兜底分组,所有未匹配到前面前缀的导入都会归入此组。separateStaticImports:设为true时,静态导入会被单独提取为一个块,默认放在所有普通导入之前。staticImportOrder:对应静态导入的分组规则,逻辑和importOrder完全一致。sortSamePackageImports:控制同一分组内的导入是否按字母顺序排序,建议开启以保持代码整洁。removeUnusedImports:搭配排序功能,自动清理代码中未被引用的导入语句。
效果示例
原混乱导入:
import com.yourorg.service.UserService; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import org.springframework.web.bind.annotation.GetMapping; import javax.annotation.PostConstruct;
应用配置后排序结果:
import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.List; import javax.annotation.PostConstruct; import com.yourorg.service.UserService; import org.springframework.web.bind.annotation.GetMapping;
内容的提问来源于stack exchange,提问作者Priess
相关产品推荐
相关产品推荐

