zoukankan      html  css  js  c++  java
  • Gradle学习(一)

    安装
    Gradle需要jdk1.5以上的安装环境,Gradle装配了自己的Groovy库,所以无需安装Groovy,配置GRADLE_HOME以及PATH
    gradle -v 测试安装成功与否
    Project与Task
        每一个Gradle的配置都是由一个或多个Project组成,Project的含义取决于你用Gradle来做什么,一个Project可能代表一个Jar library 或者一个web应用或者一个zip压缩包,一个Project并不一定代表一个即将被构建的项目,
    也可能代表一个已经被构建好的项目。
        每一个Project由一个或多个Task组成,一个Task代表一些原子性的构建工作,可能是编译代码,打jar包,生成java文档,或者发布一些归档信息到一个repository。
    Hello World
        用命令行运行Gradle构建的时候,会在当前目录下寻找一个名为build.gradle的文件
        在这个build script里定义了一个名为hello的task,当你运行gradle hello命令时gradle就会执行hello这个task里面的内容,这样定义的方式与Ant中target十分相似,Gradle中的task可以等价于Ant中的target
     
    task hello {
        doLast{
           println "Hello World!"
       }
    
    }

    运行gradle -q hello 得到如下结果(-q选型时关闭gradle日志信息,直接使用gradle hello也可以得到相同的结果,但会打印出一些Gradle的日志)

     一种更简洁的hello task定义方式,输出结果与上述方式结果一致
    task hello << {
          println 'Hello World'
    }
    Task依赖
    task hello << {
          println 'Hello World'
    }
    task intro(dependsOn: hello) << {
          println "I'm Gradle"
    }
    

     依赖与被依赖task的定义顺序可以颠倒
     
    task taskX(dependsOn: 'taskY') << {
         println "taskX"
    }
    task taskY << {
         println "taskY"
    }
    

    动态Task

    4.times { 
      counter ->  
      task "task$counter" <<{ 
         println "I'm task number $counter" 
      } 
    }
    

    操作已经存在的Task
    一旦一个task被创建了那么他们就可以被API访问,这一点与Ant不同
    4.times {
      counter ->
      task "task$counter" <<{
         println "I'm task number $counter"
      }
    }
    task0.dependsOn task2, task3
    

    task hello << {
          println 'Hello Earth'
    }
    hello.doFirst {
        println "Hello Venus"
    }
    hello.doLast {
        println "Hello Mars"
    }
    hello << {
        println "Hello Jupiter"
    }
    

    doFirst和doLast可以被定义并执行多次(定义同样的操作类型则按照定义的顺序执行) hello << 等价于hello.doLast

    额外的Task配置

    你可以通过ext.设置task的额外属性
    task myTask {
        ext.myProperty = "myValue"
    }
    task printTaskProperties <<{
        println myTask.myProperty
    }
    

    定义默认任务

    defaultTasks 'clean', 'run' 
    task clean << { 
       println "Default Cleaning!" 
    } 
    task run << { 
       println "Default Running!" 
    }
    

    相当于执行gradle clean run 命令
    在多工程构建中每一个子项目都可以拥有其默认的任务,如果一个子项目没有指定其默认的任务,那么就会执行其父项目的默认任务(如果父项目中定义的话)
     
    gradle有配置阶段以及执行阶段,在配置阶段之后Gradle会知道将要被执行的所有任务,Gradle给你提供一个“钩子”来让你使用这些信息
    下面这个例子阐述了release task是不是被执行的task之一,根据结果你可以分配不同的值给不同的变量
    task distribution << {
       println "We build the zip with version=$version"
    }
    task release(dependsOn: 'distribution') <<{
       println "We release now"
    }
    gradle.taskGraph.whenReady {
       taskGraph ->
       if(taskGraph.hasTask(release)) {
          version = "1.0"
       } else {
           version = "1.0-SNAPSHOT"
       }
    }
    

    当release task被执行的时候version = "1.0" 没被执行的时候   version = "1.0-SNAPSHOT" 

  • 相关阅读:
    python的生成Jwt
    qq邮箱验证
    DJango反序列化器的参数效验
    python三元运算,继承,help函数 args
    python时间板块,计算取值,math函数
    No migrations to apply. django同步数据库失败
    redis理论部分
    Java入门——day1
    HBO《硅谷》中的二进制码
    复习总表现(每天记录一下)
  • 原文地址:https://www.cnblogs.com/getto/p/3759905.html
Copyright © 2011-2022 走看看