前言
Gradle是什么:
- Gradle提供了一个域特定语言(DSL),用于描述构建
- 它使用 Groovy 语言,使其更容易来形容和构建
- Gradle 中的每一个构建脚本使用UTF-8进行编码保存,并命名为
build.gradle
Gradle的作用:
- 构建项目:通过脚本来管理项目的依赖、关系等
- 处理任务:例如编译类、创建Jar、产生Javadoc或发布归档文件库等
一、安装与配置
安装前提:安装JDK(我的版本是1.8)
下载地址:https://gradle.org/install/(我下载的版本是4.9)
安装步骤:
- 1、下载的是一个压缩包,解压到一个文件夹
- 2、设置环境变量
- 设置变量GRADLE_HOME,值为gradle的路径
- 设置Path变量,添加%GRADLE_HOME%/bin路径
- 3、cmd中执行gradle -v命令查看是否安装正确
Gradle配置最佳实践:
- 1、配置本地仓库位置:添加环境变量GRADLE_USER_HOME,值为希望作为本地仓库的文件夹的路径
- 2、开启守护进程:(我测试4.9时已经默认支持守护进程,所以不用配置)
- 每一次进行Gradle构建,Gradle都要运行一个JVM,然后加载相关类再进行构建
- 可以开启守护进程,让JVM不在每一次运行完成就退出,那么下次构建时就不用再创建JVM和加载类了
- 从而提供了运行效率
- 开启方式:在build.gradle同级目录下增加gradle.properties文件,里面添加代码org.gradle.daemon=true
二、构建一个简单的Java项目
Gradle通过脚本进行构建,脚本的默认名称是build.gradle。
当执行Gradle命令时,会默认找该文件夹下的build.gradle文件,如果找不到则提示帮助信息。
2.1、创建build.gradle文件
使用文本文档或其他方式创建一个build.gradle文件,并在里面输入代码
apply plugin: 'java'
这句代码表明应用了该项目构建使用了Java插件
Java插件默认会在src/main/java目录下查找程序文件
2.2、使用命令构建项目
使用cmd进入build.gradle所在文件夹,并运行gradle -i build命令(-i表示显示更多调试信息,可有可无)
输出类似如下,这个命令进行了如下几个操作
运行后得到以下文件
2.3、定制项目
上面的gradle文件只加入了一个Java插件就可以构建项目,是因为Gradle给定了很多默认值
可以查阅https://docs.gradle.org/current/dsl/进行了解
也可以通过gradle properties命令查看当前的默认值
通过以下写法可以增加项目设置
apply plugin: 'java'
version = 0.1
sourceCompatibility = 1.6
jar {
manifest {
attributes 'Main-Class': 'com.manning.gia.todo.ToDoApp'
}
}
sourceSets {
main {
java {
srcDirs = ['src']
}
}
}
buildDir = 'out'
- version:项目版本,生成的jar包名称最后会带上版本号
- sourcecompatibility:设置Java版本编译兼容1.6
- Main-Class:将Main-Class头添加到JAR文件代码清单中
- srcDirs:把Java代码路径从src/main/java改到src
- buildDir:把输出文件夹从build改成out
定制自己的项目的关键在于对潜在的属性和DSL元素的了解,尽量参考上面文档以及平时积累
2.4、配置和使用外部依赖
repositories {
mavenCentral()
}
dependencies {
providedCompile 'javax.servlet:servlet-api:2.5',
'javax.servlet.jsp:jsp-api:2.1'
runtime 'javax.servlet:jstl:1.1.2',
'taglibs:standard:1.1.2'
}
- repositories:定义仓库,表明程序依赖包应该去哪里下载;mavenCentral()是Maven仓库的一个快捷表达方式,表示去http://repol.maven.org/这个仓库去下载依赖包
- dependencies:定义依赖,依赖通过group标识符、名称、版本号来确定
三、IDEA+Gradle实战
3.1、创建一个Gradle项目
1、IDEA中File--New--Project,并通过以下选项创建一个Gradle项目
2、