java-maven-gradle

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Java Maven Gradle Skill

Java Maven Gradle技能

Master Java build tools for efficient project management and CI/CD integration.
掌握Java构建工具,实现高效项目管理与CI/CD集成。

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.
本技能涵盖Maven与Gradle的配置内容,包括依赖管理、插件设置、多模块项目以及CI/CD流水线集成。遵循2024-2025年两款工具的最佳实践。

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
在以下场景中使用本技能:
  • 搭建Maven/Gradle项目
  • 使用BOM管理依赖
  • 配置构建插件
  • 优化构建性能
  • 搭建CI/CD流水线

Topics Covered

涵盖主题

Maven

Maven

  • POM structure and inheritance
  • Dependency management with BOMs
  • Plugin configuration
  • Profiles and properties
  • Multi-module projects
  • POM结构与继承
  • 使用BOM进行依赖管理
  • 插件配置
  • 配置文件与属性
  • 多模块项目

Gradle

Gradle

  • Kotlin DSL (build.gradle.kts)
  • Dependency catalogs
  • Task configuration
  • Build cache optimization
  • Composite builds
  • Kotlin DSL (build.gradle.kts)
  • 依赖目录
  • 任务配置
  • 构建缓存优化
  • 复合构建

CI/CD Integration

CI/CD集成

  • GitHub Actions workflows
  • Dependency caching
  • Matrix builds
  • Artifact publishing
  • GitHub Actions工作流
  • 依赖缓存
  • 矩阵构建
  • 制品发布

Quick Reference

快速参考

Maven POM

Maven POM

xml
<?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>
xml
<?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

Gradle Kotlin DSL

kotlin
// 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
}
kotlin
// 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)

Version Catalog (libs.versions.toml)

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" }
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

CI/CD模板

yaml
undefined
yaml
undefined

.github/workflows/ci.yml

.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
undefined
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
undefined

Useful Commands

实用命令

bash
undefined
bash
undefined

Maven

Maven

mvn dependency:tree mvn versions:display-dependency-updates mvn help:effective-pom
mvn dependency:tree mvn versions:display-dependency-updates mvn help:effective-pom

Gradle

Gradle

gradle dependencies gradle dependencyInsight --dependency log4j gradle build --scan
undefined
gradle dependencies gradle dependencyInsight --dependency log4j gradle build --scan
undefined

Troubleshooting

故障排除

Common Issues

常见问题

ProblemCauseSolution
Dependency not foundWrong versionCheck Maven Central
Version conflictTransitive depsUse BOM or enforcer
Build OOMHeap too smallSet MAVEN_OPTS
Slow buildsNo cachingEnable build cache
问题原因解决方案
依赖未找到版本错误检查Maven Central
版本冲突传递依赖使用BOM或enforcer插件
构建内存溢出堆内存过小设置MAVEN_OPTS
构建缓慢未启用缓存启用构建缓存

Debug Checklist

调试检查清单

□ Check effective POM/build
□ Analyze dependency tree
□ Verify repository order
□ Check plugin versions
□ Review build cache
□ 检查有效POM/构建配置
□ 分析依赖树
□ 验证仓库顺序
□ 检查插件版本
□ 查看构建缓存

Usage

使用方法

Skill("java-maven-gradle")
Skill("java-maven-gradle")

Related Skills

相关技能

  • java-maven
    - Maven specific
  • java-gradle
    - Gradle specific
  • java-maven
    - 仅针对Maven
  • java-gradle
    - 仅针对Gradle