Arciphant is a Gradle settings plugin for projects built from many modules that share the same technical
structure: moduliths, Clean Architecture, Hexagonal Architecture and friends. Instead of maintaining dozens of
include(...) statements and near-identical build.gradle.kts files, you describe that structure once, as a
template, directly in settings.gradle.kts:
arciphant {
val moduleTemplate = template()
.createComponent(name = "domain")
.createComponent(name = "application", apiDependencies = setOf("domain"))
.createComponent(name = "web", dependencies = setOf("application"))
module(name = "orders", template = moduleTemplate)
module(name = "customers", template = moduleTemplate)
bundle(name = "my-app")
}From this single declaration Arciphant generates the whole multi-project build: the projects, their folders on disk
and every dependency between the components. No build.gradle.kts per component, no duplicated build logic.
- Templates instead of boilerplate. Define your architecture style once; every module gets the same shape. Adding a module is a one-liner.
- Dependencies wired automatically. Component dependencies become
implementationandapidependencies, shared libraries are exposed to every module, and test fixtures work out of the box. - The compiler enforces the architecture. Components are separate build units, so code that violates the declared dependencies does not even compile. Framework code stays on the classpath of the components that declare it.
- Clean package structure. The
validatePackageStructuretask checks that code lives where your module structure prescribes. No ArchUnit needed for the basics.
See the Arciphant documentation for setup, a quickstart, the concepts and the DSL reference.
arciphant-gradle-plugin/– the pluginarciphant-project-demo/,arciphant-source-set-demo/– a demo application, once per component layoutexamples/– small, feature-focused example buildsdocs/– user documentation
Arciphant is written in Kotlin, developed by Ergon Informatik AG and released under the MIT License. The publisher does not guarantee active maintenance and further development; we work on the plugin to the extent that we need for our own projects.
The name combines architecture and elephant, the elephant being both a metaphor for a large project and a nod to the Gradle logo.
