## 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
    
  • 配置缓存:缓存任务图计算,加快后续执行(Gradle 7+)。
  • 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 版本与配置为广泛实践。


点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部