Если бы я хотел сохранить определенный пакет Java свободным от сторонних зависимостей с помощью ArchUnit , как бы я это сделал?
Более конкретно, я смотрю на то, чтобы сохранить мою модель домена вшестиугольная архитектура, свободная от весеннего кода.Я указал некоторые правила, которые, по моему мнению, должны помешать модели использовать пружину.Тем не менее, я могу использовать весенние аннотации, такие как @Component
и @Bean
, не вызывая нарушения.
До сих пор я пробовал
layeredArchitecture().
layer("domain").definedBy(DOMAIN_LAYER).
layer("application").definedBy(APPLICATION_LAYER).
layer("primary-adapters").definedBy(PRIMARY_ADAPTERS).
layer("secondary-adapters").definedBy(SECONDARY_ADAPTERS).
layer("spring").definedBy("org.springframework..")
whereLayer("spring").mayOnlyBeAccessedByLayers("primary-adapters", "secondary-adapters", "application").
because("Domain should be kept spring-free").
check(CLASSES);
, а также
noClasses().that().resideInAPackage(DOMAIN_LAYER).
should().dependOnClassesThat().resideInAPackage("org.springframework..").
check(CLASSES);
noClasses().that().resideInAPackage(DOMAIN_LAYER).
should().accessClassesThat().resideInAPackage("org.springframework..").
check(CLASSES);
Здесь пример кода, который прекрасно выполняет тесты, хотя com.example.app.domain.Factory
импортирует org.springframework...
.