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 依赖管理

 

附:Maven中央仓库的地址

 

 

posted @ 2019-10-15 11:00  Yotu_Wang  阅读(164)  评论(0编辑  收藏  举报