Source and symbol analysis by default
Architecture testing for Java
ArchUnitJava
The foundation repository tracks a Java implementation that will analyze source and symbols without executing the target application. It aims for honest Maven and Gradle discovery, immutable rules, structured violations, and unambiguous coordinates.
Roadmap
Follow the public foundation backlogvar rule = ArchUnit.projectFiles()
.inFolder("src/main/java/**/api/**")
.shouldNot()
.dependOnFiles()
.inFolder("src/main/java/**/infrastructure/**");
ArchAssert.passes(rule);Capabilities
What ArchUnitJava brings to the test suite.
The family shares a recognizable architecture vocabulary while each implementation stays honest about its language, toolchain, and maturity.
Maven and Gradle source-root discovery
Files, packages, types, and JPMS direction
Immutable family-recognizable grammar
Structured violations
Natural JUnit 5 integration
Current maturity
Foundation stage
A public delivery skeleton and design target, not a released API. The issue backlog is the source of truth.
Where it fits
Put boundaries next to the code they protect.
Common starting points for ArchUnitJava include the following project shapes.
More ecosystems
The same intent, expressed natively.
Explore sibling implementations and carry the architecture vocabulary across a polyglot system.
Make the first boundary executable.
Add one meaningful rule, run it with the existing tests, and grow the architecture suite as the system reveals where it needs protection.
Start with ArchUnitJava ↗