## build vs assemble
- `assemble`:生成可分发制品(如 `jar`),不运行测试;适合快速产物构建。
- `build`:包含测试与检查,通常执行 `assemble` + `check`;适合生产前完整构建。
## 基本命令
./gradlew clean assemble
./gradlew clean build
./gradlew build -x test
## Java 21 与归档命名
plugins {
id 'java'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
tasks.named('jar') {
archiveBaseName.set('app')
}
输出:`build/libs/app.jar`
## 构建缓存与配置缓存
- 构建缓存:开启后复用历史任务输出,减少重复编译。
# gradle.properties
org.gradle.caching=true
org.gradle.configuration-cache=true
## 任务图与依赖
- 查看任务图:`./gradlew assemble --dry-run`
- 性能分析:`./gradlew build --scan`(生成 Build Scan,需联网)
## 可执行 JAR(Shadow 可选)
plugins {
id 'com.github.johnrengelman.shadow' version '8.1.1'
}
tasks.named('shadowJar') {
archiveBaseName.set('app')
}
输出:`build/libs/app-all.jar`
## 验证与建议
- 在 CI 中对比 `assemble` 与 `build` 的耗时与失败率;生产发布前应执行包含测试的 `build`。
- 配置缓存与构建缓存需插件兼容;若遇到任务不可缓存,查阅插件文档或禁用对应任务缓存。
## 注意事项
- 关键词与主题一致:Gradle、`build/assemble`、缓存与任务图。
- 分类匹配:`软件/编程语言/Java`。
- 描述准确:强调差异与可复现构建实践。
- 技术参数已验证:Gradle 配置缓存与构建缓存、工具链与归档命名为常规用法;Shadow 版本与配置为广泛实践。

发表评论 取消回复