ArchUnit 1.0.0
0.x
version, please also refer to the release notes of release candidate 1.0.0-rc1
as these release notes refer to upgrading from the release candidate
Breaking Changes
- Naming around
JavaPackage
subpackages and dependencies has been improved to remove ambiguities. In general, whenever all classes from a package and subpackages recursively are involved, this is now called "package tree". Otherwise, it only targets the classes directly within this package (see #919/#968; thanks a lot to @grimsa)
The following mapping shows how to translate the old methods to the current methods:getAllClasses()
->getClassesInPackageTree()
getAllSubpackages()
->getSubpackagesInTree()
getClassDependenciesFromSelf()
->getClassDependenciesFromThisPackageTree()
getClassDependenciesToSelf()
->getClassDependenciesToThisPackageTree()
getPackageDependenciesFromSelf()
->getPackageDependenciesFromThisPackageTree()
getPackageDependenciesToSelf()
->getPackageDependenciesToThisPackageTree()
accept(..)
->traversePackageTree(..)
- Importing the default package via
ClassFileImporter.importPackages("")
will now yields the same result as usingimportClasspath()
without anyImportOption
(see #954) ClassFileImporter.importClasspath()
now behaves consistently to other import APIs. I.e. no defaultImportOptions
likeDoNotIncludeArchives
are added anymore, instead allImportOptions
need to be added the same way as for all other import methods (see #958)- The custom collection
ImportOptions
has been removed from the public API and been replaced by a standardCollection<ImportOption>
where appropriate (see #958) - The package
com.tngtech.archunit.library.plantuml
has been moved tocom.tngtech.archunit.library.plantuml.rules
to make room for adding other PlantUML related features (see #959) - SLF4J-API has been upgraded from
1.7.30
to2.0.3
, so any log adapter dependency to be used with ArchUnit (e.g. to hook in Log4J) has to be compatible with SLF4J-API2.x
from now on (see #966)
Bug Fixes
- Fix bug where multiple synthetic access calls to methods like
access$123(..)
would lead to only one access being imported. Note, that these synthetic methods are added for calls to private fields / methods from inner classes to outer classes, etc. (see #957)
Enhancements
Lang
archunit_ignore_patterns.txt
is now also respected byFreezingArchRule
. Thus, ignored violations are not added to theViolationStore
anymore (see #915)
Library
testClassesShouldResideInTheSamePackageAsImplementation(..)
now supports multiple test classes with same simple name (see #918; thanks a lot to @mslowiak)PlantUmlArchCondition
now does not throw exceptions anymore, if a class is in none or multiple components, but instead reports those as standard violations. This way these violations can also be frozen viaFreezingArchRule
instead of crashing the test (see #960)
Further Acknowledgement
- Thanks a lot to @hankem for upgrading various dependencies, cleaning up code and extensive reviews