# java-tooling

> Configure Maven, Gradle, and static analysis for Java projects. Use for Java-only build and quality tooling such as Spotless, Checkstyle, SpotBugs, SonarLint, JDK versions, and Java service Dockerfiles; defer Kotlin, Android, Flutter, and GitHub Actions-specific configuration.

- Skill: `hoangnguyen0403/java-tooling` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds add hoangnguyen0403/java-tooling`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hoangnguyen0403/java-tooling/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: HoangNguyen0403 (https://skillmd.com/u/hoangnguyen0403)
- Updated: 2026-08-19
- Page: https://skillmd.com/skills/hoangnguyen0403/java-tooling

---

# Java Tooling Standards

## **Priority: P2 (MEDIUM)**


## Implementation Guidelines

- **JDK Setup**: Use **`.sdkmanrc`** or **`.java-version`** to lock project to **LTS Support (17 or 21)**. Configure Gradle toolchain via `java { toolchain { languageVersion = JavaLanguageVersion.of(21) } }` for reproducible builds.
- **Maven & Wrapper**: Use **`pom.xml`** with **`<dependencyManagement>`**. ALWAYS use **`mvnw`** wrapper.
- **Gradle & Catalog**: Prefer **`build.gradle.kts`** (Kotlin DSL) with **`libs.versions.toml`** (Version Catalog). Use **`gradlew`** wrapper.
- **Formatting**: Enforce **Google Style Guide** using **`Spotless`** (`googleJavaFormat()` plugin) or **`Checkstyle`**.
- **Static Analysis**: Integrate **`SpotBugs`** or **`SonarLint`** for deep analysis. Use **`Detekt`** if using Kotlin.
- **Docker**: Use **Multi-stage Dockerfiles**. Use **`eclipse-temurin`** as base image.
- **CI/CD**: Configure **GitHub Actions** or **GitLab CI** to run `mvnw test` or `gradlew build` on 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.

## References

- [Gradle Kotlin DSL & Spotless Setup](references/example.md)

