gpt4 book ai didi

java - ArchUnit:如何避免对 Java 类的依赖冲突

转载 作者:行者123 更新时间:2023-11-30 12:05:16 26 4
gpt4 key购买 nike

我想验证给定包中的类仅引用驻留在包本身中的类。但是我遇到了违规行为,告诉我 a 类取决于例如java.lang.String,这对我来说完全没问题。有没有办法忽略基本的java包?

        @ArchTest
static final ArchRule zeroDependencyOfDomain = noClasses().that()
.resideInAPackage("..domain..")
.should().dependOnClassesThat()
.resideOutsideOfPackages("..domain..");

最佳答案

如果您不想显式指定所有外部包,例如 java.javax.com.google.org.apache. 等你只关心项目包,那么你可以加入“domain or external lib”这两个条件。

String PROJECT_PACKAGE = "com.myproject..";

DescribedPredicate<JavaClass> domainOrExternalLibPredicate = JavaClass.Predicates.resideInAnyPackage("..domain..")
.or(JavaClass.Predicates.resideOutsideOfPackage(PROJECT_PACKAGE));

@ArchTest
static final ArchRule zeroDependencyOfDomain = classes().that()
.resideInAPackage("..domain..")
.should().onlyDependOnClassesThat()
.resideInAnyPackage(domainOrExternalLibPredicate);

在这种情况下,外部库被定义为 PROJECT_PACKAGE 之外的任何东西。

关于java - ArchUnit:如何避免对 Java 类的依赖冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56426813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com