Claude-skill-registry gradle-standards

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/gradle-standards" ~/.claude/skills/majiayu000-claude-skill-registry-gradle-standards && rm -rf "$T"
manifest: skills/data/gradle-standards/SKILL.md
source content

Gradle Standards

Standards for Gradle configuration in Java projects, including version catalogs, dependency bundles, and multi-module setup.

When to use this skill

  • Setting up a new Gradle project
  • Adding or updating dependencies
  • Configuring multi-module builds
  • Troubleshooting dependency conflicts
  • Migrating to version catalogs
  • Cleaning up unused dependencies
  • Optimizing build performance
  • When asked for "gradle dependencies cleanup"

Skill Contents

Sections

Available Resources

📚 references/ - Detailed documentation


Quick Start

1. Version Centralization (Required)

All versions MUST be centralized in

gradle/libs.versions.toml
:

[versions]
spring-boot = "3.5.9"
grpc = "1.78.0"

[libraries]
spring-boot-starter-web = { module = "org.springframework.boot:spring-boot-starter-web", version.ref = "spring-boot" }
spring-boot-starter-actuator = { module = "org.springframework.boot:spring-boot-starter-actuator", version.ref = "spring-boot" }

2. Use in build.gradle

dependencies {
    // ✅ CORRECT: Use version catalog with explicit dependencies
    implementation libs.spring.boot.starter.web
    implementation libs.spring.boot.starter.actuator

    // ❌ NEVER: Hardcode versions
    // implementation "org.springframework.boot:spring-boot-starter-web:3.5.9"
}

Key Principles

PrincipleDescription
Centralize VersionsAll versions in
libs.versions.toml
, never inline
Explicit DependenciesDeclare each dependency explicitly for clarity
Use Native LockingUse Gradle's native dependency locking (Gradle 9+ recommended)
Never DowngradeDon't replace existing versions with older ones
Trust BOMsSpring Boot BOM manages transitive dependencies
Platform Over EnforceUse
platform()
, never
enforcedPlatform()
Use resolutionStrategyUse Gradle's native
resolutionStrategy
for version control
Lock DependenciesGenerate
gradle.lockfile
for ALL submodules (use
build --write-locks
)

Version Alignment

Use Gradle's native

resolutionStrategy
to ensure all modules in a library group use the same version:

// build.gradle - Native Gradle version alignment
configurations.configureEach {
    resolutionStrategy {
        // Force specific versions for security or compatibility
        force libs.jackson.core
        force libs.jackson.databind

        // Align all modules in a group
        eachDependency { details ->
            if (details.requested.group == 'io.grpc') {
                details.useVersion libs.versions.grpc.get()
            }
        }
    }
}

This approach is preferred because:

  • Subprojects can declare exactly what they need
  • Dependencies are explicit and visible in build files
  • No external plugins required (built into Gradle)
  • First-class support in Gradle 9+

References

ReferenceDescription
references/version-catalogs.mdComplete version catalog guide
references/multi-module.mdMulti-module project setup
references/native-dependency-locking.mdGradle native locking (Gradle 9+ recommended)
references/cleanup-workflow.mdDependency cleanup process
references/unused-detection.mdFinding unused dependencies
references/optimization.mdBuild optimization techniques
references/troubleshooting.mdCommon issues and solutions

Related Rules

Dependency Resolution Stack

┌─────────────────────────────────────────────────────────────────────┐
│  1. VERSION CATALOG (libs.versions.toml)                            │
│     Single source of truth for declared versions                    │
├─────────────────────────────────────────────────────────────────────┤
│  2. RESOLUTION STRATEGY (build.gradle)                              │
│     Use Gradle's native resolutionStrategy for:                     │
│     - force() for security fixes                                    │
│     - eachDependency for group alignment                            │
│     - dependencySubstitution for module replacement                 │
├─────────────────────────────────────────────────────────────────────┤
│  3. LOCK FILE (gradle.lockfile)                                     │
│     Native Gradle locking (Gradle 9+ recommended)                   │
│     Captures EXACT resolved versions                                │
│                                                                     │
│  ⚠️  CRITICAL: Multi-module projects need lockfiles for ALL modules │
│     Use: ./gradlew build --write-locks -x test                      │
│     NOT: ./gradlew dependencies --write-locks (root only!)          │
└─────────────────────────────────────────────────────────────────────┘

Lock File:

Multi-Module Lockfile Generation:

# ✅ CORRECT: Generates lockfiles for ALL submodules
./gradlew build --write-locks -x test

# ❌ WRONG: Only generates for ROOT project
./gradlew dependencies --write-locks

# Verify coverage (lockfiles should ≈ build.gradle files)
find . -name "gradle.lockfile" | wc -l
find . -name "build.gradle" | wc -l

Related Skills

SkillPurpose
dependency-management
Version catalogs and BOMs
dependabot-security
Security vulnerability fixes
java-coverage
JaCoCo configuration in Gradle
java-testing
Test configuration with Spock
<!-- AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY --> <!-- Source: bitsoex/ai-code-instructions → java/skills/gradle-standards/SKILL.md --> <!-- To modify, edit the source file and run the distribution workflow -->