当前位置: 首页 > news >正文

第一章:Gradle vs Maven,该知道的差异

1.1 一句话结论

Gradle 用代码写配置,Maven 用 XML 写配置。Gradle 更快、更简洁,代价是刚开始不太顺手。


1.2 配置文件对比

Maven:一个pom.xml(XML,只能描述,不能写逻辑)

Gradle:两个文件:

  • settings.gradle:写项目名,多模块时列子模块
  • build.gradle:主配置,替代pom.xml

本项目pom.xml有 281 行,迁移后build.gradle约 90 行。


1.3 直接对照:最常见的改法

你在 Maven 里写的在 Gradle 里怎么写
<groupId>com.own</groupId>group = 'com.own'
<version>1.0</version>version = '1.0'
<packaging>war</packaging>plugins { id 'war' }
<parent> spring-boot-starter-parent </parent>plugins { id 'org.springframework.boot' version '...' }
<properties><java.version>1.8</java.version>sourceCompatibility = '1.8'
<dependency>...</dependency>implementation '...'
<scope>provided</scope>compileOnlyprovidedRuntime
<scope>test</scope>testImplementation
<optional>true</optional>compileOnly+annotationProcessor
mvn clean package -DskipTestsgradle clean build -x test
mvn spring-boot:rungradle bootRun

1.4 为什么 Gradle 快?

三件事:

  1. 增量构建:文件没改过的模块直接跳过,不重新编译
  2. 构建缓存gradle clean之后再 build,命中缓存的任务不重跑
  3. Daemon 进程:JVM 常驻内存,不用每次冷启动

Maven 每次clean package都是从头跑,这是本质差距。


1.5 Scope 对照(重点)

Maven scopeGradle 写法说明
默认(compile)implementation最常用
providedcompileOnly(库)/providedRuntime(WAR)不打入包
runtimeruntimeOnly如 JDBC 驱动
testtestImplementation
optional=truecompileOnly+annotationProcessor如 Lombok

1.6 不用纠结的事

  • Groovy DSL vs Kotlin DSL:用 Groovy(.gradle文件),网上资料多,够用
  • Gradle 版本:本项目 Java 8 + Spring Boot 2.x,用 Gradle 7.6.4 稳
  • 目录结构src/main/javasrc/main/resources完全不用动
http://www.jsqmd.com/news/1142653/

相关文章:

  • 从材料到装配:解读盖茨皮带应对传动失效的设计方案
  • Three.js 模型混合着色器教程
  • 如何利用数智化工具提升区域产业技术图谱的精准性与实用性?
  • 作为电商美工,我为什么把米壳AI生图设为常驻工具?
  • WorkshopDL:终极Steam创意工坊下载器,无需客户端跨平台畅享模组
  • 智能培训平台怎么选?五大成本维度深度拆解
  • 你的Windows电脑卡顿了吗?让Winhance中文版帮你一键优化
  • macOS Sonoma 14.4 网络调试:3 种替代 Telnet 的方案(nc, ssh, curl)与场景对比
  • 【大模型学习】AI大事件,每日更新
  • 从移动门户到信创桌面门户:一套小程序生态如何覆盖央国企、政务的多端办公
  • 罗德与施瓦茨RS FSW26 信号与频谱分析仪
  • DDrawCompat终极指南:Windows经典游戏兼容性修复的完整解决方案
  • 2026年7月三款主流远程桌面深度横评!
  • Leaflet中文文档项目:5个核心技巧助你快速掌握开源地图开发
  • GB/T 15089-2001 车辆分类解析:从 L1 到 O4 的 5 大类 15 子类划分标准
  • 蓝海AIoT一站式工作台实践案例:高危作业智控驾驶舱
  • Veo 3 价格 2026:API 秒费、Flow 积分和每条视频真实成本
  • 【LeetCode Hot100】链表知识点集合
  • 2026最新8款AI编程工具基础版免费实测合集
  • Nginx alias配置安全详解:从目录遍历漏洞到防护实践
  • 2025最新快速构建企业级虚拟专用网络环境学习笔记
  • FBX转GLB格式转换技术文档
  • Lasso回归坐标下降法 Python 实现:从梯度不可导到 1000 轮迭代收敛(附完整代码)
  • STM32与IIM-20670 IMU运动跟踪开发指南
  • 基于IIM-20670和TM4C129XKCZAD的高精度运动跟踪系统设计
  • Simple Live:四大直播平台一站式观看,告别频繁切换的烦恼
  • Windows Server 2022 部署 RabbitMQ 4.3 服务:5个关键配置项与端口安全策略
  • 后LangChain时代:从链式脚手架到AI系统架构的范式跃迁
  • 宿管系统能直接控制联网门锁吗?100万+终端运维后的边界划分复盘
  • Fastjson 1.2.67 DNSLog 探测实战:3种绕过黑名单的Payload构造与原理分析