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

如何配置ArchUnit规则:允许指定包访问外部依赖,禁止内部跨包访问?

修改后的ArchUnit测试代码

先修正原代码里的语法错误(多余的右括号),再调整规则条件以精准匹配需求:

@AnalyzeClasses(packages = "com.mycompany", importOptions = {DoNotIncludeTests.class})
public class MyTest {

    @ArchTest
    public static final ArchRule my_test = 
            noClasses()
            .that()
                .resideInAPackage("com.mycompany.x..")
            .should()
                .accessClassesThat()
                .resideInAPackage("com.mycompany..")
                .and()
                .resideOutsideOfPackage("com.mycompany.x..");
}
规则逻辑说明
  • 原规则的问题:resideOutsideOfPackage("com.mycompany.x..")会禁止所有x包外的类访问,包含外部库的类,不符合需求。
  • 修改后的核心逻辑:
    1. resideInAPackage("com.mycompany.."):先锁定被访问的类属于项目自身的com.mycompany包及其子包(外部库类不属于此范围,直接被排除)。
    2. and().resideOutsideOfPackage("com.mycompany.x.."):再排除x包及其子包的类,最终只禁止x包内的类访问项目内com.mycompany下的非x子包类。
  • 此修改既实现了禁止访问项目内其他包的要求,又允许自由使用外部库的类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:03:19