ArchUnit:如何避免对java类的依赖冲突
我想验证,给定包中的类只引用驻留在包本身中的类。然而,我得到了一个违规,告诉我a类依赖于例如java.lang.String,这对我来说是完全正确的。有没有办法忽略基本的java包ArchUnit:如何避免对java类的依赖冲突,java,archunit,Java,Archunit,我想验证,给定包中的类只引用驻留在包本身中的类。然而,我得到了一个违规,告诉我a类依赖于例如java.lang.String,这对我来说是完全正确的。有没有办法忽略基本的java包 @ArchTest 静态最终ArchRule zeroDependencyOfDomain=noClasses().that() .ResideInAppackage(“…域…”) .should().dependOnClassesThat() .居住区视频包(“域名”); 您可以显式地允许依赖于java包: @Ar
@ArchTest
静态最终ArchRule zeroDependencyOfDomain=noClasses().that()
.ResideInAppackage(“…域…”)
.should().dependOnClassesThat()
.居住区视频包(“域名”);
您可以显式地允许依赖于java包:
@ArchTest
static final ArchRule zeroDependencyOfDomain = noClasses().that()
.resideInAPackage("..domain..")
.should().dependOnClassesThat()
.resideOutsideOfPackages("..domain..", "java..");
您还可以使用classes()
和onlyDependOnClassesThat()
,我认为这更容易阅读:
@ArchTest
static final ArchRule zeroDependencyOfDomain = classes().that()
.resideInAPackage("..domain..")
.should().onlyDependOnClassesThat()
.resideInAnyPackage("..domain..", "java..");
与另一个答案类似,我也没有找到比这更好的方法:
private static final String[] COMMON_PACKAGES = {
"java..",
"javax..",
"com.google..",
"org.springframework.."};
@ArchTest
final ArchRule classesInProdutPackageNoOutsideAccess =
classes()
.that()
.resideInAnyPackage(PACKAGE_FOO)
.should()
.onlyAccessClassesThat()
.resideInAnyPackage(commonPackagesAnd(PACKAGE_FOO));
private static String[] commonPackagesAnd(String... packages) {
return ArrayUtils.addAll(packages, COMMON_PACKAGES);
}