Releases: TNG/ArchUnit
Releases · TNG/ArchUnit
Release list
ArchUnit 1.5.0
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 👋)
ArchUnit 1.4.2
ArchUnit 1.3.2
ArchUnit 1.4.1
ArchUnit 1.3.1
Enhancements
(backported from ArchUnit 1.4.0)
Core
- Support Java 24 / class file major version 68 (backported from #1364)
ArchUnit 1.4.0
Enhancements
Core
- Support Java 24 / class file major version 68 (#1364)
Lang
Library
- New
GeneralCodingRules.OLD_DATE_AND_TIME_CLASSES_SHOULD_NOT_BE_USED(#1385; thanks to @Bukama 👏) - Improve
GeneralCodingRules.testClassesShouldResideInTheSamePackageAsImplementationto not fail for classes with no tests in their packages (#1368; thanks to @krzysztof-owczarek 👏)
JUnit
- Fix failure when
junit.testFilteris used (#1361; thanks to @Sparkymann 👏) - Enable
@AnalyzeClassesannotation to be used as meta annotation (#1300; thanks to @mathze 👏)
Documentation
- Fix user guide describing wrong default behavior of
@AnalyzeClasses(#1406) - Clarify Slices documentation (#1366; thanks to @mipo256 👏)
Internal improvements
ArchUnit 1.1.1
Bug Fixes
- Fix ArchUnit importer being unable to import classes from Spring Boot Nested jars (see #1224)
ArchUnit 1.2.2
Bug Fixes
- Fix ArchUnit importer being unable to import classes from Spring Boot Nested jars (see #1224)
ArchUnit 1.3.0
Bug Fixes
- Fix ArchUnit importer being unable to import classes from Spring Boot Nested jars (see #1224)
- Fix
OnionArchitecturelosingwithOptionalLayers()on description override (see #1185) - Fix
JavaType.getAllInvolvedRawTypes()recursing infinitely for recursive type definitions (see #1237) - Fix
@ArchTestfields in base classes of@ArchIgnored classes not being ignored (see #1277)
Enhancements
Core
- Add support for Java 23 (see #1275; thanks a lot to @hankem)
- New method
JavaType.traverseSignature(..)to examine parts of a type signature more conveniently (see 8456198 of #1276)
Lang
- Make handling specific violating object types with
ViolationHandlermore convenient (see #1251)
Library
- Jakarta EE annotations are now considered in
GeneralCodingRules.NO_CLASSES_SHOULD_USE_FIELD_INJECTION(see #1285; thanks a lot to @hankem) - PlantUML rules now ignore dependencies between unparsable objects (e.g. a database instead of a regular component) (see #1132; thanks a lot to @tfij)
- PlantUML rules now optionally support the
componentkeyword incomponent [Example] <<..example..>>(see #1223; thanks a lot to @tfij)
JUnit
@ArchTests included viaArchTests.in(..)now report their full "inclusion path" in the test report (see #452, #1279)- Specific
@ArchTestrules can now be executed by setting the ArchUnit propertyjunit.testFilter=rule_field_name/ setting the system property-Darchunit.junit.testFilter=...(compare the user guide; see #1280)