主要内容介绍
什么是Gradle
Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build scripts are written using a Groovy or Kotlin DSL
通俗的讲Gradle是开源的构建项目工具,跟maven一样但是比maven更加的灵活可扩展,因为gradle可以通过写groovy脚本来完成项目的构建,Maven我们都知道通过xml来配置,gradle只需要通过写groovy脚本比如在写插件的时候gradle只需要简短的几行代码就可以完成
Gradle的官网: gradle.org/
Gradle功能特性
- 高度定制化: 定制化插件非常方便
- 构建快速:构建的速度比maven快很多
- 功能强大:能够很好的扩展,比较的灵活
Gradle的安装
1.gradle的安装需要要有jdk1.8以上,首先要确保自己本地环境jdk已经安装
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
看到以上信息说明JDK是安装成功的
2.去gradle官网下载gradle最新版本,gradle.org/releases/ 下载gradle安装版本 通过命令解压
tar -zxvf gradle-6.3-bin.zip -d /usr/local/gradle
3.配置环境变量,vim ~/.bash_profile文件中添加以下内容
export GRADLE_HOME=/workspace/software/gradle-6.3
export PATH=$PATH:GRADLE_HOME/bin
执行source ~/.bash_profile命令使其生效
4.通过下面命令查看gradle是否安装成功
JasonMacBook-Pro:~ Jason$ gradle -v
------------------------------------------------------------
Gradle 6.1.1
------------------------------------------------------------
Build time: 2020-01-24 22:30:24 UTC
Revision: a8c3750babb99d1894378073499d6716a1a1fa5d
Kotlin: 1.3.61
Groovy: 2.5.8
Ant: Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM: 1.8.0_231 (Oracle Corporation 25.231-b11)
OS: Mac OS X 10.14.5 x86_64
看到以上信息说明Gradle安装成功
Gradle配置文件介绍
gradle项目会有以下几个文件:
- build.gradle: 描述构建逻辑, 所有的构建逻辑都写在这里
- settings.gradle:描述项目的基本信息,标记根项目和子项目
- gradlew:对gradle可执行命令的包装,屏蔽不同版本的兼容
Gradle的常用命令
gradle项目清理命令
gradle clean
./gradlew clean test
gradle项目构建
gradle build
以debug模式编译项目
gradle build --debug
构建生成分析报告:
gradle build --scan
./gradlew build
打印gradle启动debug信息
gradle --info --debug --stacktrace
Gradle实战
下面的例子我们来建立多个module项目,来演示一些如何创建gradle项目
1.我们先建立gradle-facade项目,用于提供服务接口 新建一个接口MemberFacade
public interface MemberFacade {
String sayHello(String name);
}
2.新建一个新的module用于实现接口gradle-facade-impl,定义实现MemberFacade接口的实现类:
public class MemberFacadeImpl implements MemberFacade {
@Override
public String sayHello(String name) {
return "Hello " + name;
}
}
在该module下的build.gradle文件添加下面依赖
dependencies {
//依赖本地jar
compile(project(":gradle-facade"))
testCompile group: 'junit', name: 'junit', version: '4.12'
}
3.完成测试,编写测试类
public class MemberFacadeTest {
@Test
public void testQueryMember(){
MemberFacade memberFacade = new MemberFacadeImpl();
String result = memberFacade.sayHello("Jason");
System.out.println(result);
}
}
4.接下来我们来建立一个新的module叫web,用springboot来启动项目 首先要在web项目build.gradle添加下面内容
plugins {
//添加springboot依赖
id 'org.springframework.boot' version '2.2.6.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
group 'com.java.tech'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
//添加springboot依赖
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testCompile group: 'junit', name: 'junit', version: '4.12'
}
5.编写启动类
@SpringBootApplication
public class CoreApplication {
public static void main(String[] args) {
SpringApplication.run(CoreApplication.class,args);
}
}
项目github地址:github.com/Jason0104/j…
Gradle案例项目
接下来我们会重点介绍build.gradle文件中的具体配置,重点把常见的使用技巧标注出来
//构建脚本 需要添加到build.gradle文件顶端
buildscript {
//用于定义动态属性
ext{
springBootVersion='2.2.6.RELEASE'
}
repositories {
//使用maven的中央仓库
mavenCentral()
}
//注明依赖关系
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
plugins {
id 'java'
id 'org.springframework.boot'
id 'io.spring.dependency-management'
}
group 'com.java.tech'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
//仓库定义
repositories {
mavenCentral()
}
//依赖关系
dependencies {
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile('org.springframework.boot:spring-boot-starter-web')
//父类依赖
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
//本地项目依赖
compile(project(":gradle-service-impl"))
testCompile group: 'junit', name: 'junit', version: '4.12'
}