(1)Gradle入门
Gradle介绍
Gradle是新一代项目自动化构建工具。构建工具的作用:
- 各种jar包和项目版本的依赖管理。
- 测试、打包、发布。
- 机器能干的活,绝不自己动手。gradle是一个构建集成工具。
Ant、Maven和Gradle对比

【Ant】
Ant就相当于保洁,要到每一个文件夹去找Java文件(等于要到每一张桌子去收集盘子),收集里面的Java文件编译成.class文件,最终把.class文件转移到一个指定的文件夹下面,然后打包。

【maven】
Java文件不再向Ant一样可以随便乱放,而是给我们一个指定的位置,如src/main/Java。就像学生吃完饭要把餐盘放在指定的回收区,保洁就在回收区中清理餐盘,约定优于配置。我们把所有Java类放到指定文件夹下,maven就到这个文件夹收集Java文件并编译成class类。

【Gradle】
maven所有逻辑都是写在xml中的,缺点就是写if else这些逻辑很复杂,要好几行。Gradle放弃了xml而使用Groovy语言,在Groovy中写xml的构建过程。也就是在Maven的基础上使用Groovy管理构建脚本,不再使用XML来管理。

Groovy
Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,即可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。
【Groovy与Java相比】
- Groovy完全兼容Java的语法。
- 分号是可选的。
- 类、方法默认是public的。
- 编译器给属性自动添加getter/setter方法。
- 属性可以直接用点号获取。
- 最后一个表达式的值会被作为返回值。
- ==等同于equals(),不会有NullPointerExceptions。
【使用IDEA创建Groovy项目】
1. 新建Groovy项目

Use local gradle distribution意思是使用本地安装的gradle版本。


2. Groovy项目创建完成
build.graddle、settings.gradle都是脚本构建文件。

Groovy目录结构:

目录结构需要手动创建。
3. 打开Groovy的窗口

打开之后就可以开始写代码了。

第一个Gradle项目
【TODO-应用程序版本】
1. 新建一个groovy项目

2. 创建项目目录结构

3. 编写代码
TodoItem类:
public class TodoItem {
// 待办事项名称
private String name;
// 是否已完成
private boolean hasDone;
public TodoItem(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isHasDone() {
return hasDone;
}
public void setHasDone(boolean hasDone) {
this.hasDone = hasDone;
}
@Override
public String toString() {
return name + (hasDone?"hasDone":"need to do")+"!";
}
}
App类:
public class App {
public static void main(String[] args){
int i = 0;
Scanner scanner = new Scanner(System.in);
while(++i>0){
System.out.println(i+"please input todo item name:");
TodoItem item = new TodoItem(scanner.nextLine());
System.out.println(item);
}
}
}
4. 构建
在项目的右侧有一个gradle,我们点击这里。这个窗口下面我们只关心Tasks/build下面的内容。

- jar:把当前源文件编译完成之后打包成jar包。
- build:可以实现和jar命令同样的功能。它执行的是build.gradle这个脚本。
- classes:将源代码编译成class类。
- clean:清楚之前的构建。
执行jar命令就把当前项目打包了:

因为这个jar包里面有main方法,所以我们可以直接执行。现在我们打开终端执行这个jar:
java -classpath build/libs/todo-1.0-SNAPSHOT.jar com.immoc.gradle.to.App