如何修改Spotless插件正则以移除含静态导入的通配符导入?
解决Spotless通配符导入正则兼容静态导入的问题
直接修改searchRegex,加入对static关键字的可选匹配逻辑即可,同时调整捕获组的引用序号:
修改后的完整replaceRegex代码块:
<replaceRegex> <name>Remove wildcard imports</name> <searchRegex>import\s+(static\s+)?[^\*\s]+\*(\r\n|\r|\n)</searchRegex> <replacement>$2</replacement> </replaceRegex>
正则逻辑拆解
import\s+:匹配开头的import关键字及后续任意空白字符(static\s+)?:用?标记这部分为可选,既可以匹配普通导入,也能匹配带static的静态导入[^\*\s]+:匹配通配符*之前的包路径,排除*和空白字符,确保只抓取合法的包名部分\*:精准匹配通配符*(\r\n|\r|\n):捕获任意格式的换行符,通过$2引用保留原换行,避免破坏代码结构
效果验证
- 普通通配符导入:
import com.example.*→ 会被匹配并移除,仅保留换行 - 静态通配符导入:
import static com.example.utils.*→ 同样会被匹配并移除,仅保留换行
内容的提问来源于stack exchange,提问作者buttercup
相关产品推荐
相关产品推荐

