‹ 返回笔记 Esc·

Gradle 问题与修复

Maven 与 Gradle 对比 --- Gradle 依赖缓存目录 ~/.gradle/caches/modules-2/files-2.1 --- Gradle Wrapper 组成文件 Gra…

Maven 与 Gradle 对比

功能 Maven 命令 Gradle 命令 说明
清理项目 mvn clean gradle clean 清理构建目录,删除编译生成的文件和临时文件。
打包项目 mvn package gradle assemble 将项目打包成 JAR、WAR 等可分发文件
运行单元测试 mvn test gradle test 运行项目中的单元测试
验证构建结果 mvn verify gradle check 验证项目的构建结果,包括运行集成测试
编译源代码 mvn compile gradle compileJava 编译项目的源代码
安装到本地仓库 mvn install gradle publishToMavenLocal 将打包后的文件安装到本地 Maven 仓库
部署到远程仓库 mvn deploy gradle publish 将打包的文件部署到远程 Maven 仓库
清理并打包 mvn clean package gradle clean assemble 清理并打包(组合使用)

Gradle 依赖缓存目录

~/.gradle/caches/modules-2/files-2.1


Gradle Wrapper 组成文件

Gradle Wrapper 是一种确保项目使用特定 Gradle 版本进行构建的机制,即使系统中没有全局安装 Gradle。

Gradle Wrapper 通常由以下几个文件组成,通常位于项目的根目录下:

  1. gradlewgradlew.bat(w: wrapper)
    • gradlew:Unix/Linux/macOS 系统下的可执行脚本
    • gradlew.bat:Windows 系统下的可执行脚本
    • 这两个脚本用于执行 Gradle Wrapper 构建命令,它们代替了系统上直接调用 gradle 命令。
  2. gradle/wrapper/gradle-wrapper.jar
    • 这是 Gradle Wrapper 的核心库文件,负责下载并运行指定的 Gradle 版本。
  3. gradle/wrapper/gradle-wrapper.properties
    • 这个文件是 Gradle Wrapper 的配置文件。它包含了要下载的 Gradle 版本、下载地址等信息。

Gradle bootRun 启动日志无彩色输出

在使用 gradle bootRun 启动 Spring Boot 项目时,发现日志不是彩色输出(不像用 java -jar 时那样有彩色日志),这是一个常见现象,原因与 Gradle 的输出流机制有关。Gradle 默认会将控制台输出重定向为普通文本(plain mode),而不会自动启用 ANSI 彩色输出。

Spring Boot 的日志系统(默认是 Logback)只有在检测到支持 ANSI 的终端时才会输出彩色日志。如果 Gradle 运行环境不是“交互式终端”,它就认为当前不支持颜色。

方案 1:修改 build.gradle

在 build.gradle 的 bootRun 任务中加入以下配置:

1bootRun {
2    // 启用彩色输出
3    systemProperty 'spring.output.ansi.enabled', 'ALWAYS'
4}

方案 2:命令行临时指定

1gradle bootRun --args='--spring.output.ansi.enabled=ALWAYS'

或者用环境变量的方式:

1SPRING_OUTPUT_ANSI_ENABLED=ALWAYS gradle bootRun

方案 3:在 application.yml 中全局开启彩色日志

1spring:
2  output:
3    ansi:
4      enabled: ALWAYS

这样不论你是用 bootRun、java -jar 还是其他方式运行,都会强制启用彩色日志。


项目 .gradle 工作目录下载速度慢

1distributionUrl=https://mirrors.tencent.com/gradle/gradle-8.6-bin.zip