java-maven-gradle
Master Maven and Gradle - build configuration, dependencies, plugins, CI/CD
When & Why to Use This Skill
This Claude skill provides comprehensive expertise in Java build automation, covering both Maven and Gradle ecosystems. It assists developers in configuring complex project structures, managing dependencies with modern best practices like BOMs and Version Catalogs, and setting up robust CI/CD pipelines to ensure efficient and reliable software delivery.
Use Cases
- Initializing and configuring high-performance Maven or Gradle project structures for single-module and complex multi-module Java applications.
- Managing and resolving intricate dependency trees and version conflicts using Bill of Materials (BOMs), Enforcer plugins, and Gradle Version Catalogs.
- Optimizing build speeds and performance through advanced build cache configuration, parallel task execution, and efficient plugin management.
- Designing and implementing automated CI/CD workflows with GitHub Actions, including dependency caching strategies and artifact publishing.
- Modernizing legacy build scripts to follow 2024-2025 best practices, such as migrating to Gradle Kotlin DSL (build.gradle.kts) and Java 21 toolchains.
| name | java-maven-gradle |
|---|---|
| description | Project structure type |
| sasmp_version | "1.3.0" |
| version | "3.0.0" |
| bonded_agent | 05-java-build-tools |
| bond_type | PRIMARY_BOND |
| allowed-tools | Read, Write, Bash, Glob, Grep |
| type | string |
| enum | [single, multi_module, library] |
Java Maven Gradle Skill
Master Java build tools for efficient project management and CI/CD integration.
Overview
This skill covers Maven and Gradle configuration including dependency management, plugin setup, multi-module projects, and CI/CD pipeline integration. Follows 2024-2025 best practices for both tools.
When to Use This Skill
Use when you need to:
- Set up Maven/Gradle projects
- Manage dependencies with BOMs
- Configure build plugins
- Optimize build performance
- Set up CI/CD pipelines
Topics Covered
Maven
- POM structure and inheritance
- Dependency management with BOMs
- Plugin configuration
- Profiles and properties
- Multi-module projects
Gradle
- Kotlin DSL (build.gradle.kts)
- Dependency catalogs
- Task configuration
- Build cache optimization
- Composite builds
CI/CD Integration
- GitHub Actions workflows
- Dependency caching
- Matrix builds
- Artifact publishing
Quick Reference
Maven POM
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<java.version>21</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<spring-boot.version>3.2.1</spring-boot.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.4.1</version>
</plugin>
</plugins>
</build>
</project>
Gradle Kotlin DSL
// build.gradle.kts
plugins {
java
id("org.springframework.boot") version "3.2.1"
id("io.spring.dependency-management") version "1.1.4"
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
tasks.test {
useJUnitPlatform()
maxParallelForks = Runtime.getRuntime().availableProcessors() / 2
}
Version Catalog (libs.versions.toml)
[versions]
spring-boot = "3.2.1"
junit = "5.10.1"
[libraries]
spring-boot-starter-web = { module = "org.springframework.boot:spring-boot-starter-web", version.ref = "spring-boot" }
junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" }
[plugins]
spring-boot = { id = "org.springframework.boot", version.ref = "spring-boot" }
CI/CD Templates
# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: 'maven' # or 'gradle'
- run: ./mvnw -B verify
Useful Commands
# Maven
mvn dependency:tree
mvn versions:display-dependency-updates
mvn help:effective-pom
# Gradle
gradle dependencies
gradle dependencyInsight --dependency log4j
gradle build --scan
Troubleshooting
Common Issues
| Problem | Cause | Solution |
|---|---|---|
| Dependency not found | Wrong version | Check Maven Central |
| Version conflict | Transitive deps | Use BOM or enforcer |
| Build OOM | Heap too small | Set MAVEN_OPTS |
| Slow builds | No caching | Enable build cache |
Debug Checklist
□ Check effective POM/build
□ Analyze dependency tree
□ Verify repository order
□ Check plugin versions
□ Review build cache
Usage
Skill("java-maven-gradle")
Related Skills
java-maven- Maven specificjava-gradle- Gradle specific