Java Tooling Standards
Priority: P2 (RECOMMENDED)
Standardized build and tooling configuration for consistent environments.
Implementation Guidelines
- JDK Setup: Use
.sdkmanrcor.java-versionto lock the project to LTS Support (17 or 21). Configure Gradle toolchain viajava { toolchain { languageVersion = JavaLanguageVersion.of(21) } }for reproducible builds. - Maven & Wrapper: Use
pom.xmlwith<dependencyManagement>. ALWAYS use themvnwwrapper. - Gradle & Catalog: Prefer
build.gradle.kts(Kotlin DSL) withlibs.versions.toml(Version Catalog). Use thegradlewwrapper. - Formatting: Enforce Google Style Guide using
Spotless(googleJavaFormat()plugin) orCheckstyle. - Static Analysis: Integrate
SpotBugsorSonarLintfor deep analysis. UseDetektif using Kotlin. - Docker: Use Multi-stage Dockerfiles. Use
eclipse-temurinas the base image. - CI/CD: Configure GitHub Actions or GitLab CI to run
mvnw testorgradlew buildon every PR.
Anti-Patterns
- No Global Installs: Always use mvnw/gradlew wrappers; never rely on system Maven/Gradle.
- No Fat Jars: Prefer layered Docker images over uber-jars for better layer caching.
- No Snapshots in Prod: Never use -SNAPSHOT dependency versions in production builds.