AxonFramework-Full — build-logic conventions

One base, two ways every module opts in

Gradle's answer to Maven's axon-parent inheritance — three precompiled script plugins in build-logic/, applied by name from each module's own build.gradle.kts rather than inherited implicitly.

axonframework.java-conventions

▼ every module applies exactly one of these two on top ▼

axonframework.published-conventions

For modules that ship to Maven Central

  • maven-publish + sources/javadoc jars
  • POM metadata — points at this fork's own repo and maintainer, not upstream's AxonIQ org/SCM/developers
  • axon-<name> artifact prefix, set on both base.archivesName (jar filename) and MavenPublication.artifactId (the actual coordinate) — two separate defaults that both silently miss it otherwise, confirmed by a real generated POM once, not assumed from the fix
  • Doclint disabled on the javadoc task, matching upstream's own root pom.xml (<doclint>none</doclint>) — Axon's HTML uses self-closing <p/> tags JDK 25's stricter javadoc rejects outright
  • GPG signing, gated on SIGNING_KEY/SIGNING_PASSWORD being present
  • Picked up automatically for Central Portal upload — see the publishing pipeline
Used by test-logging common

axonframework.internal-conventions

For modules that never publish

  • Nothing beyond java-conventions — the plugin itself is the marker
  • Matches upstream's maven.deploy.skip/maven.javadoc.skip/ maven.source.skip trio, currently only set on docs/_samples
  • Deliberate addition beyond upstream: also planned for integrationtests, which upstream doesn't skip-publish today
Planned for docs/_samples integrationtests (neither converted yet)
Why a marker plugin with no extra config, instead of just not applying anything? Self-documentation — a module's own build file states its non-published status explicitly and greppably, rather than leaving it as an implicit fact inferred from the absence of the other plugin.