Enhancements
Core
- Support Java 27 / class file major version 71 (#1618)
- Improve descriptions of
JavaAccess.Predicates.originOwnerandJavaAccess.Predicates.targetOwner(#1603; thanks to @StefanGraeber 👋) - Expose information on sealed classes via
JavaClass:isSealed()andgetPermittedSubclasses()(#1677) - Consider dependencies from caught exceptions (#1555; thanks to @bannmann 👋)
ImportOption.DoNotIncludeTestsandOnlyIncludeTestsconsider tests in custom Gradle source sets (#1660; thanks to @Develop-KIM 👋)
Lang
ArchConditionsoffers newArchCondition<JavaClass> haveAnyDependenciesThat(DescribedPredicate<Dependency>)(#1580; thanks to @wakingrufus 👋)
Library
ArchitectureMetrics.lakosMetricsis computed much more performantly (#1629; thanks to @ThanosTsiamis 👋)TextFileBasedViolationStoreis now thread-safe under parallel test execution (#1656; thanks to @kelunik 👋)ModuleDependencynow provides stable descriptions (#1648; thanks to @DragonFSKY 👋)
JUnit
archunit-junit6supports ArchUnit with JUnit 6 (#1556,#1658, #1659; many thanks to @arukiidou & @schulzjo-tng 👋)AnalyzeClassessupports individual classes (#1569; thanks to @TheManWhoStaresAtCode 👋)- Preparation:
archunit-junit:0.9.0(which was renamed with ArchUnit 0.9.0) now relocates toarchunit-junit4:0.9.0(#1673; thanks to @schulzjo-tng 👋) – will be published after #1684 🙈
Documentation
- Document
Priority(#1671; thanks to @TheManWhoStaresAtCode 👋) - Document Package Identifiers in User Guide (#1672; thanks to @TheManWhoStaresAtCode 👋)
Internal Improvements
- Text files now use UNIX line breaks (#1602, #1611; thanks to @StefanGraeber 👋)
- Update Gradle from 8 to 9; build & test with JDK 25 (#1550, and also #1612, #1619)
- Separate integration tests by JUnit version (#1636; many thanks to @schulzjo-tng 👋)
- Replace
junit-dataproviderwithjunit-jupiter-params(#1655) - ArchUnit releases now update Maven examples (and Gradle wrapper) of ArchUnit-Examples (#1450)
- Avoid managing hamcrest dependency (#1467; thanks to @TheManWhoStaresAtCode 👋)