Project structure type
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
You Might Also Like
Related Skills

verify
Use when you want to validate changes before committing, or when you need to check all React contribution requirements.
facebook
test
Use when you need to run tests for React core. Supports source, www, stable, and experimental channels.
facebook
feature-flags
Use when feature flag tests fail, flags need updating, understanding @gate pragmas, debugging channel-specific test failures, or adding new flags to React.
facebook
extract-errors
Use when adding new error messages to React, or seeing "unknown error code" warnings.
facebook