Skip to content



  • DescribedPredicate now offers a more lambda compatible factory method DescribedPredicate.describe(description, predicate) (see #188; thanks a lot to @jzheaux)
  • New factory method DescribedPredicate.allElements(..) to complement DescribedPredicate.anyElementThat(..) (see b8890f4)
  • Support for JDK 13 (see #195; thanks a lot to @jqno)
  • ArchUnits configuration ( and ignore patterns (archunit_ignore_patterns.txt) are now loaded with the ContextClassLoader instead of the ClassLoader of the respective class (see 81c31f6)


  • New method classes().that().belongToAnyOf(..) to match any class or inner class of the passed classes (see #173; thanks a lot to @moboa)
  • New method classes().should().haveOnlyPrivateConstructors() (see #204; thanks a lot to @sullis)
  • New methods members().should().{have,notHave}FullName[Not][Matching](..) (see #205; thanks a lot to @hankem)


  • New FreezingArchRule to wrap any other ArchRule and change the behavior (see #181):
    • on the first run record all existing violations
    • on further runs only fail by unknown violations
    • also on further runs automatically decrease the stored violation count if existing violations are solved
    • compare the user guide
  • New Architectures.onionArchitecture() API offering a predefined API for Onion or Hexagonal Architectures, compare the user guide (see #174; thanks a lot to @spanierm)


  • The JUnit 5 platform dependency has been upgraded to version 1.5.1

Further Acknowledgement

  • Thanks a lot to @hankem for adjusting Spotbugs to ignore false positives with JDK 9
  • Thanks a lot to @hankem for fixing incompatibilities of some tests with JDK 12
  • Thanks a lot to @vincent-fuchs for improving ArchUnit's logging
  • Thanks a lot to @sullis for upgrading dependencies
Assets 2
You can’t perform that action at this time.