Skip to content

Java Library

Java

  • Build: Maven, run through make like every other language.
  • Tests: JUnit; acceptance scenarios run with Cucumber from test/bdd/features/.
  • Lint: Checkstyle; ArchUnit enforces the dependency direction app → infra → usecase → domain in make arch-test.
  • Rationale: Maven is the build tool most Java developers know, and its standard layout needs no configuration.

Library

  • Structure: a public API and its implementation; no executable of its own.
  • Acceptance tests: a library has no running process; where the profile has acceptance scenarios, they drive the public API, in C++ through a test-only CLI wrapper.
  • Pipeline: build, test, and, where the language has packages, package; no container image.
  • Rationale: a consumer depends on the published API, so the guidelines stress semantic versioning and a small public surface.