Skip to content

Releases: TNG/ArchUnit

ArchUnit 1.3.2

10 May 09:10

Choose a tag to compare

Enhancements

(backported from ArchUnit 1.4.1)

Core

  • Support Java 25 / class file major version 69 (backported from #1440)
  • Avoid deprecated sun.misc.Unsafe::objectFieldOffset from (relocated) com.google.guava:guava (backported from #1440)

ArchUnit 1.4.1

07 May 20:03

Choose a tag to compare

Enhancements

Core

  • Support Java 25 / class file major version 69 (#1440)

Library

  • Support priorities in SlicesRuleDefinition (#1436; thanks to @guesshe 👏)
  • Ignore synthetic bridge methods in ProxyRules (#1443)

Documentation

  • Improve documentation of slices rule (#1454)

Internal improvements

  • Reduce memory footprint of ClassFileImporterSlowTest (#1446 / #1440)

ArchUnit 1.3.1

19 Mar 23:37

Choose a tag to compare

Enhancements

(backported from ArchUnit 1.4.0)

Core

  • Support Java 24 / class file major version 68 (backported from #1364)

ArchUnit 1.4.0

10 Feb 22:24

Choose a tag to compare

Enhancements

Core

  • Support Java 24 / class file major version 68 (#1364)

Lang

  • Improve performance for transitive dependency checks (#1381; thanks to @To6i 👏)

Library

  • New GeneralCodingRules.OLD_DATE_AND_TIME_CLASSES_SHOULD_NOT_BE_USED (#1385; thanks to @Bukama 👏)
  • Improve GeneralCodingRules.testClassesShouldResideInTheSamePackageAsImplementation to not fail for classes with no tests in their packages (#1368; thanks to @krzysztof-owczarek 👏)

JUnit

  • Fix failure when junit.testFilter is used (#1361; thanks to @Sparkymann 👏)
  • Enable @AnalyzeClasses annotation 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

  • Run tests with JUnit Platform to pave the way to migrate to JUnit 5 (#1294)
  • Update Gradle Wrapper from 7.6 to 8.12 (#1392)
  • Extend CI to run tests with JDK 21 (#1408)

ArchUnit 1.1.1

25 Apr 14:01

Choose a tag to compare

Bug Fixes

  • Fix ArchUnit importer being unable to import classes from Spring Boot Nested jars (see #1224)

ArchUnit 1.2.2

23 Apr 22:46

Choose a tag to compare

Bug Fixes

  • Fix ArchUnit importer being unable to import classes from Spring Boot Nested jars (see #1224)

ArchUnit 1.3.0

11 Apr 14:47

Choose a tag to compare

Bug Fixes

  • Fix ArchUnit importer being unable to import classes from Spring Boot Nested jars (see #1224)
  • Fix OnionArchitecture losing withOptionalLayers() on description override (see #1185)
  • Fix JavaType.getAllInvolvedRawTypes() recursing infinitely for recursive type definitions (see #1237)
  • Fix @ArchTest fields 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 ViolationHandler more 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 component keyword in component [Example] <<..example..>> (see #1223; thanks a lot to @tfij)

JUnit

  • @ArchTests included via ArchTests.in(..) now report their full "inclusion path" in the test report (see #452, #1279)
  • Specific @ArchTest rules can now be executed by setting the ArchUnit property junit.testFilter=rule_field_name / setting the system property -Darchunit.junit.testFilter=... (compare the user guide; see #1280)

Further Acknowledgement

  • Thanks a lot to @hankem for improving the user guide (see #1221)

ArchUnit 1.2.1

03 Dec 23:24

Choose a tag to compare

Bug Fixes

  • Fix crash on importing inner classes that use += string concatenation on outer class private field (see #1146, #1194)

ArchUnit 1.2.0

06 Nov 00:30

Choose a tag to compare

Enhancements

Core

  • Add support for Java 22 (see #1172; thanks a lot to @hankem)
  • New methods {JavaType/JavaMember}.getAllInvolvedRawTypes() to quickly detect all raw types contributing to a type (e.g. List<? extends Serializable>) or member (e.g. List<? extends Serializable> method(Set<String> args) {..}) (see #723; thanks a lot to @leonardhusmann)

Lang

  • New rules API FieldsShould.{be/notBe}AccessedByMethodsThat(predicate) to prevent fields from being accessed by certain methods (see #857; thanks a lot to @leonardhusmann)

Library

  • New extensive modules rule syntax to support easier checks for modularization (dependency direction, API surface, ...) (compare the user guide; see #1078)

JUnit

Further Acknowledgement

ArchUnit 1.1.0

09 Aug 14:55

Choose a tag to compare

Bug Fixes

  • Try-Catch-Blocks declared within lambdas will now be detected correctly (see #1069)
  • Fix ArchUnit not being able to find classes loaded by Spring Boot ClassLoader (see #1131; thanks a lot to @odrotbohm)

Enhancements

Core

  • New ImportOption DoNotIncludeGradleTestFixtures (see #949)
  • Reduce all log levels except WARN to TRACE (see #1050)
  • Add support for Java 21 (see #1098)

Library

  • Two new GeneralCodingRules (see #970; thanks a lot to @hankem)
    • ASSERTIONS_SHOULD_HAVE_DETAIL_MESSAGE
    • DEPRECATED_API_SHOULD_NOT_BE_USED
  • TextFileBasedViolationStore is now part of the public API and can thus be used for customization; as a special case of this file names can now be adjusted (see #1046; thanks a lot to @danhaywood)
  • TextFileBasedViolationStore now adds a final new line character to the violation file to better conform to the spec (see #1057; thanks a lot to @pkubowicz)