gradle整理
第1章 课程介绍
第2章 准备使用Gradle
上手验证一下Gradle的特性
1.搭载环境
2.代码验证
代码1:
1 class Student { 2 3 private String name 4 private int age 5 6 Student(String name, int age) { 7 this.name = name 8 this.age = age 9 } 10 11 @Override 12 String toString() { 13 return "Student{" + 14 "name='" + name + '\'' + 15 ", age=" + age + 16 '}' 17 } 18 } 19 20 def stu1 = new Student("张帆", 21) 21 def stu2 = null 22 23 println stu1.name 24 println stu1 == stu2
结果如下:
张帆 false
第3章 第一个Gradle项目
1.环境搭建
2.项目目录
3.创建实体类对象TodoItem和测试类App
TodoItem.java
1 public class TodoItem { 2 3 private String name; 4 5 private boolean hasDone; 6 7 public TodoItem(String name) { 8 this.name = name; 9 } 10 11 public String getName() { 12 return name; 13 } 14 15 public void setName(String name) { 16 this.name = name; 17 } 18 19 public boolean isHasDone() { 20 return hasDone; 21 } 22 23 public void setHasDone(boolean hasDone) { 24 this.hasDone = hasDone; 25 } 26 27 @Override 28 public String toString() { 29 return name + (hasDone == true ? " has Done" : " need to do"); 30 } 31 }
App.java
1 import java.util.Scanner; 2 3 public class App { 4 5 public static void main(String[] args) { 6 Scanner scan = new Scanner(System.in); 7 TodoItem item = new TodoItem(scan.next()); 8 System.out.println(item); 9 10 } 11 }
4.测试
第4章 高级应用
4-1 构建脚本基本介绍
项目(Project)
一个项目对应一个project实例,gradle根据build.gradle配置内容实例化一个org.gradle.api.Project类;
project属性有group, name, version;
方法有apply, repositories, dependencies, task;
属性的其他配置方式可以通过 : ext, gradle.properties;
任务(Task)
任务对应org.gradle.api.Task。任务动作定义了一个最小的工作单元。主要包括任务动作和任务依赖。可以定义依赖于其他任务、动作序列和执行条件。
任务之间的依赖:
- dependsOn
- doFirst doLast <<
task hello { doLast { println 'Hello world!' } }
快捷的定义方式,使用<< 代替 doLast{}
<< 操作符是 doLast 的简单别称。
task helloWorld << { println 'helloWorld343' }
默认任务定义,调用任何任务都会执行的任务,没有<< 也米有doLast{}
task defaultmytask { println 'ddddddd' }
看看下面的代码:
1 task hello << { 2 println 'Hello world!' 3 } 4 5 task intro(dependsOn: hello) << { 6 println "I'm Gradle" 7 }
说明:intro 依赖于 hello, 所以执行 intro 的时候 hello 命令会被优先执行来作为启动 intro 任务的条件。在加入一个依赖之前, 这个依赖的任务不需要提前定义。
动态任务:下面的times是遍历,counter是遍历的变量名
4.times { counter -> task "task$counter" << { println "I'm task number $counter" } }
4-2 自定义任务
目标:定义两个任务,目标分别是当创建的Java项目和Web项目的目录不完整时,进行目录填补。
build.gradle
1 plugins { 2 id 'java' 3 } 4 5 6 group 'com.angei' 7 version '1.0-SNAPSHOT' 8 9 sourceCompatibility = 1.8 10 11 repositories { 12 mavenCentral() 13 } 14 15 dependencies { 16 testCompile group: 'junit', name: 'junit', version: '4.12' 17 } 18 19 def createDir = { 20 path -> 21 File file = new File(path); 22 if(!file.exists()){ 23 file.mkdir(); 24 } 25 } 26 27 task makeJavaDir(){ 28 def paths = ['src/main/java','src/main/resources','src/test/java','src/test/resources']; 29 doFirst{ 30 paths.forEach(createDir); 31 } 32 } 33 34 task makeWebDir(){ 35 dependsOn 'makeJavaDir' 36 def paths = ['src/main/webapp','src/test/webapp']; 37 doLast{ 38 paths.forEach(createDir); 39 } 40 }
右侧导航新出现两个我们自定义的任务:
点击运行后效果:
4-3 构建生命周期
4-4 依赖管理