- https://www.mojohaus.org/jdepend-maven-plugin/usage.html
- https://www.archunit.org/
- https://github.com/xmolecules/jmolecules
JUnit Check For Cycles
val jdepend = JDepend()
jdepend.addPackage("package.common")
jdepend.addPackage("package.util")
jdepend.addPackage("package.module1")
jdepend.addPackage("package.module2")
assertEquals(false, jdepend.also { it.analyze() }.containsCycles())
ArchUnit examples
val importedClasses =
ClassFileImporter().importPackages("com.example")
val evaluation = noClasses()
.that()
.resideInAPackage("..util..")
.should()
.accessClassesThat().resideInAPackage("..dto..")
.because("Util classes should not access DTO classes")
.check(importedClasses) // will throw if it fails