在日常 Java 后端开发中,Gradle 已成为构建自动化的重要工具。本文将围绕以下三个常见问题展开讨论,帮助大家深入理解和高效使用 Gradle:
- Gradlew(Gradle Wrapper)的常用命令及解读
- 如何查看指定子模块的依赖树
- Gradle 与 Gradlew 的核心区别
一、Gradlew 常用命令及解读
gradlew 是 Gradle Wrapper 的执行脚本,确保在不同环境下使用项目指定版本的 Gradle 构建。以下是 Java 后端项目中最常用的 10 个命令:
| 命令 |
用途说明 |
./gradlew build |
编译、测试并打包生成构建产物(如 .jar) |
./gradlew clean |
清除构建生成的临时输出(build/ 目录) |
./gradlew bootRun |
启动 Spring Boot 项目(依赖 boot 插件) |
./gradlew bootJar |
构建可执行的 Spring Boot fat jar |
./gradlew test |
执行所有单元测试 |
./gradlew dependencies |
打印当前模块的依赖树 |
./gradlew --refresh-dependencies |
强制刷新并重新下载所有依赖 |
./gradlew tasks |
列出当前项目支持的所有构建任务 |
./gradlew properties |
查看项目属性,如 group、version、路径等 |
./gradlew build -x test |
构建时跳过测试任务(开发调试用) |
进阶使用:
1
| ./gradlew bootRun --args='--spring.profiles.active=dev'
|
二、查看指定子模块的依赖树
如果你的项目是一个多模块 Gradle 项目,并且你想查看某个子模块(例如 ylsk-message)的依赖结构,可以使用以下命令:
1 2 3 4 5
| bash
复制编辑 ./gradlew :wyt-backend:dependencies
|
可选参数(查看不同配置):
| 命令 |
用途 |
--configuration compileClasspath |
查看编译期依赖 |
--configuration runtimeClasspath |
查看运行时依赖 |
--configuration testCompileClasspath |
查看测试依赖 |
例如:
1 2 3 4 5
| bash
复制编辑 ./gradlew :wyt-backend:dependencies --configuration compileClasspath
|
输出中常见格式说明:
1 2 3 4 5 6 7
| lua
复制编辑 +--- org.springframework.boot:spring-boot-starter-web -> 2.7.4 | +--- org.springframework.boot:spring-boot-starter | | +--- org.springframework.boot:spring-boot ...
|
+--- 表示直接依赖
| +--- 表示传递依赖
-> 表示版本被替换(依赖冲突时的版本解析结果)
三、Gradle 与 Gradlew 有什么区别?
虽然 gradle 和 gradlew 作用类似,但它们背后的机制和使用场景有明显差异:
| 对比项 |
gradle |
gradlew |
| 是否需本地安装 |
✅ 需要安装 Gradle |
❌ 不需要,项目内自带 wrapper |
| 版本控制 |
不可控,取决于本地版本 |
可控,项目中可指定版本 |
| 构建一致性 |
❌ 易因版本差异导致问题 |
✅ 保证不同环境构建结果一致 |
| CI/CD 支持 |
不推荐使用 |
强烈推荐使用 |
| 使用方式 |
直接运行,如 gradle build |
运行项目脚本,如 ./gradlew build |
Wrapper 文件组成:
1 2 3 4 5 6 7 8
| text
复制编辑 gradlew // Linux/macOS 脚本 gradlew.bat // Windows 脚本 gradle/wrapper/gradle-wrapper.properties gradle/wrapper/gradle-wrapper.jar
|
如何添加 wrapper 到项目中?
如果你的项目没有 Gradle Wrapper,可通过以下命令生成:
1 2 3 4 5
| bash
复制编辑 gradle wrapper --gradle-version 8.2
|
✅ 总结
- 推荐始终使用
./gradlew 来执行构建任务,确保构建环境一致性
- 使用
:moduleName:dependencies 精确查看模块依赖,有助于排查依赖冲突
- 掌握常用命令能大幅提升开发效率,配合 CI/CD 使用更佳
芝兰生于深林,不以无人而不芳; 君子修道立德,不谓穷困而改节。