Gradle简介及与Maven项目的互相转化
简单介绍
下一代Maven。Gradle安装和Maven的安装类似,下载文件,解压设置GRADLE_HOME
即可。
project & task
build.gradle
类似于pom.xml
,一个示例build.gradle
文件:
// 声明插件
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'
// 指定mainClass
mainClassName = 'hello.HelloWorld'
// 指定仓库
repositories {
mavenLocal()
mavenCentral()
}
// 指定构建物及版本
jar {
baseName = 'gs-gradle'
version = '0.1.0'
}
// 指定依赖, 类似Maven GAV
dependencies {
compile "joda-time:joda-time:2.2"
}
// wrapper
task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
Gradle 里的几乎任何东西都是基于两个基础概念:project & task。Gradle 中所有执行的事件都是借由 Task 执行的。对于一个Gradle工程,根目录执行:gradle tasks -q
,-q
表示忽略gradle本身的log信息,加上这个参数可以屏蔽很多无关的输出。
通常会给task附带一些执行动作,称之为Action。
也可以附带一个闭包配置,称之为Configuration,闭包中不仅可用做赋值操作,也可以执行一些自动执行的配置。
Task依赖。
task xxx << {
}
这样的语法等价于
task xxx
xxx.dolast {
}
关于project:
目录:
重要文件:
setting.gradle
文件
一个父工程 project 可以包含多个子工程 child-project,一般一个工程一个 build.gradle 文件。父工程的 build.gradle 统一管理子工程的build.gradle。
Gradle Wrapper
Gradle wrapper automatically generates several files for you that helps to allow people to build your code without needing to install Gradle ahead of time, which is useful especially when needing to do continuous integration testing.
By checking in the gradlew and gradlew.bat files into your source code repository, other people on Unix and Windows platforms do not need to go through the process of manually downloading Gradle or installing Android Studio.
Gradle的封装。有了Gradle wrapper,即便机器上没有安装Gradle,也可执行Gradle的构建工作。
在build.gradle
里加入类似如下task:
task createWrapper(type: Wrapper) {
gradleVersion = '1.1.1'
}
生成gradle wrapper时指定项目所需要用的gradle版本,这样当别人用gradle wrapper时,然后执行该task: gradle createWrapper
,就会在项目工程生成以下的文件:
Project-name/
gradlew
gradlew.bat
gradle/wrapper/
gradle-wrapper.jar
gradle-wrapper.properties
这些文件即构成gradle wrapper
。这些文件需要上传到版本控制工具的server端(如GitLab)。生成这些文件的操作只需要做一次即可。
使用gradle wrapper时,直接在项目根目录下直接执行gradlew
(gradle wrapper
简写), 方式和gradle一模一样,如通过``。执行gradlew命令时,gradlew会委托gradle命令来做相应的事情,gradlew只是一个壳。wrapper会检查当前机器是否已经安装对应版本的gradle,如果安装,gradlew就会委托gradle执行用户输入的命令。如果未安装,则自动从Gradle repository下载并安装在本地~/.gradle/wrapper
目录。也可以在配置文件中指定想要下载的server来替代默认的Gradle repo。
Gradle会自动为新建的工程添加wrapper。也就是你就不必自己再去创建gradle wrapper,直接在命令行或者你的编译脚本中使用就好。
常用命令:
gradlew -v // 版本号
gradlew clean // 清除build文件夹
gradlew build // 检查依赖并编译打包
gradlew tasks // 查看所有任务
gradlew assembleDebug // 编译并打Debug包
gradlew assembleRelease // 编译并打Release的包
gradlew installRelease // Release模式打包并安装
gradlew uninstallRelease // 卸载Release模式包
gradlew build
,把debug、release环境的包都打出来,如果正式发布只需要打Release的包。
Gardle v.s. Maven
优势
- 基于 groovy 的简洁语法;
- groovy task 比 maven plugin 灵活方便;
互相转化
gradle --> maven
把gradle转成maven项目,前提是gradle项目目录结构保持跟maven一样的约定,即/src/main/java
。
在build.gradle
中增加以下内容(group,version可自行修改,artifactId默认为目录名称)
apply plugin: 'java'
apply plugin: 'maven'
group = 'com.johnny'
version = '1.7'
sourceCompatibility = 1.8
执行gradle install
,成功后将在build\poms
目录下生成pom-default.xml
文件,复制到根目录下,改名成pom.xml
即可。通过修改build.gradle
也可以直接在根目录下生成pom.xml
task writeNewPom << {
pom {
project {
inceptionYear '2018'
licenses {
license {
}
}
}
}.writeTo("$buildDir/pom.xml")
}
maven --> gradle
安装gradle 2.0
以上的版本,在maven根目录下运行:gradle init --type pom
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix