gradle 构建 hello world

gradle 简介

百度百科对 gradle 的解释:

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。

gradle 脚本使用 Groovy 写的,什么是 Groovy 呢:

Groovy 是 用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。

配置环境变量

  • 下载安装 gradle
  • 加入到环境变量:

    • 新建环境变量 GRADLE_HOME:
      D:\Program Files\Android\Android Studio\gradle\gradle-2.14.1
    • 将 %GRADLE_HOME%\bin 添加到 Path 中。

简单的 groovy 语句

  • 新建 build.gradle

    task groovy<<{}
    // 变量定义
    def foo = 6.5
    // 变量的使用
    println "foo has value: $foo"
    // 字符串中插入运算
    println "Let's do some math. 5 + 6 = ${5 + 6}"
    // 输出变量类型
    println "foo is of type: ${foo.class} and has value: $foo"
    foo = "a string"
    println "foo is now of type: ${foo.class} and has value: $foo"
  • 执行

    gradle groovy
  • 输出如下:

    foo has value: 6.5
    Let's do some math. 5 + 6 = 11
    foo is of type: class java.math.BigDecimal and has value: 6.5
    foo is now of type: class java.lang.String and has value: a string
    :groovy
  • groovy 中可以直接使用 Java 语法:

    class JavaGreeter {
    public void sayHello() {
        System.out.println("Hello Java!");
    }
    }
    JavaGreeter greeter = new JavaGreeter()
    greeter.sayHello()

gradle task

  • 创建任务

    project.task("myTask1")
    task("myTask2")
    task "myTask3"
    task myTask4
    myTask4.description = "This is what's shown in the task list"
    myTask4.group = "This is the heading for this task in the task list,"
    myTask4.doLast {println "Do this last"}
    myTask4.doFirst {println "Do this first"}
    myTask4.leftShift {println "Do this even more last"}
    myTask4 << {println "Do this last of all"}
    task myTask5 << {
    println "Here's how to declare a task and give it an action in one stroke"
    }
    task myTask6 {
    description "Here's a task with a configuration block"
    group "Some group"
    doLast {
        println "Here's the action"
    }
    }
    task myTask7 {
    description("Description") // Function call works
    //description "Description" // This is identical to the line above
    group = "Some group" // Assignment also works
    doLast { // We can also omit the parentheses, because Groovy syntax
        println "Here's the action"
    }
    }
    task myTask8(description: "Another description") << {
    println "Doing something"
    }
  • 执行任务

    gradle myTask8

gradle task 依赖关系

  • dependsOn
    执行 putOnShoes ,会先执行 putOnSocks。

    task putOnSocks {
    doLast {
        println "Putting on Socks."
    }
    }
    task putOnShoes {
    dependsOn "putOnSocks"
    doLast {
        println "Putting on Shoes."
    }
    }
    task getReady {
    // Remember that when assigning a collection to a property, we need the
    // equals sign
    dependsOn = ["takeShower", "eatBreakfast", "putOnShoes"]
    }
  • finalizedBy
    执行 eatBreakfast ,完成后会执行 brushYourTeeth

    task eatBreakfast {
    finalizedBy "brushYourTeeth"
    doLast{
        println "Om nom nom breakfast!"
    }
    }
    task brushYourTeeth {
    doLast {
        println "Brushie Brushie Brushie."
    }
    }
  • shouldRunAfter 执行 putOnFragrance ,会先执行 takeShower

    task takeShower {
    doLast {
        println "Taking a shower."
    }
    }
    task putOnFragrance {
    shouldRunAfter "takeShower"
    doLast{
        println "Smellin' fresh!"
    }
    }

使用 gradle 构建 HelloWorld

  • 新建一个 build.gradle ,加入如下代码:

    apply plugin: 'java'
  • 新建目录 src/main/java
    这是 gradle 默认的 java 目录,不这样写 gradle 找不到 java 文件。 添加 /demo/HelloWorld.java

    package demo;
    public class HelloWorld{
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
    }
  • 编译

    gradle build

    build 会执行下面的 task:

    :compileJava
    :processResources UP-TO-DATE
    :classes
    :jar
    :assemble
    :compileTestJava UP-TO-DATE
    :processTestResources UP-TO-DATE
    :testClasses UP-TO-DATE
    :test UP-TO-DATE
    :check UP-TO-DATE
    :build
    BUILD SUCCESSFUL
  • 运行
    build 之后,会在当前目录生成 build 文件夹,classes 文件在 build/classes/main/demo 文件夹下面。 切换目录到 build/classes/main,执行:

    java demo/HelloWorld
  • 另一种运行方法

    apply plugin: 'java'
    task execute(type: JavaExec){
    main = "demo.HelloWorld"
    classpath = sourceSets.main.runtimeClasspath
    }

    执行:

    gradle execute

    输出如下:

    :compileJava
    :processResources UP-TO-DATE
    :classes
    :execute
    Hello World
    BUILD SUCCESSFUL

参考链接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值