Gradle 特性和常用命令行

了解Gradle最好先学习groovy语言的核心语法,方便学习

1.Gradle的特性

  • gradle 兼容ant和maven,是在ant和maven取的中间值,既有ant的灵活配置又有maven的约定优于配置原理,使用编程的方式管理项目,更加具有逻辑性(个人理解)

  • 特点:
    1)可表达性的构建语言和底层API --gradle脚本中的元素都和Java类一对一的映射,支持暴露钩子到生命周期阶段
    2)Gradle就是Grooby,通过编程语言实现来提供很强的逻辑表达
    3)灵活的约定,更简单的约定文件的输入输出位置
    4)鲁棒和强大的依赖管理
    5)可扩展的构建
    6)轻松的可扩展性
    7)和其他构建工具集成(ant,Maven)
    8)社区和公司的驱动
    9)额外的特性,支持驼峰形式的命令访问(前提驼峰名是唯一的)

2.常用命令行和选项

gradle构建脚本默认的名字是build.gradle

2.1 gradle命令行:
  i:   gradle tasks  列出task
  ii:   gradle tasks --all 列出所有的task
  iii:另外正确的任务顺序,任务前面执行了,后面就不会执行了
         gradle gradle01 gradle02  如果	gradle02依赖了gradle01,那么gradle01不会执行两次
  vi:支持task的驼峰命名执行,例如有tast  groupTest {} ,那么命令行执行可以直接使用 gradle gT执行
  v:在执行命令的时候排除一个任务,用-x来实现,例如 gradle gradle02 -x gradle01
2.2 命令行的选项
   i:改变为INFO日志可以通过-i实现
   ii:想打印执行期间发生的错误的堆栈总计信息,使用-s
         上面两个联合可以这样使用 gradle gradle02 -is 或者gradle gradle02 -i-s
   iii: -?,h,--help:打印出所有的命令项,包含描述信息
   iv:-b,--build-file:gradle构建脚本的名称默认是build.gradle,改变的可以使用这个选项改变
    v: --offline:通常构建中声明的依赖必须是在离线仓库中存在才可用,如果本地缓存中没有那么就会构建失败,这个可以检测本地缓存中依赖是否存在
2.3 参数选项
  i:-D,--system-prop:Gradle是一个JVM进程运行的,和所有的Java进程一样,可以这样提供一个系统参数,就像-Dmyprop=myvalue这样 ,和maven插件传参一样
  ii:-P,--project-prop:项目参数是构建脚本中可用的变量,你可以直接使用这个选项向构建脚本中传入参数,比如-Pmyprop=myvalue
2.4 日志选项
  i:-i,--info:在默认配置中,gradle不会提供大量的输出信息,通过这个选项可以将gradle的日志级别改变到INFO以获取更多的信息。
  ii:-s,--stacktrace:如果在构建运行中出现了错误,你会想要知道错误的源头,通过这个可以打印简单的堆栈跟踪消息,方便定位调试
  iii:-q,--quiet:减少构建出错时答应出来的错误日志信息
2.5 帮助任务
   i:tasks:显示项目中可运行的task,包含他们的描述信息,项目中应用插件可能会提供额外的task
   ii:properties:显示项目中所有可用的属性。某些属性是由gradle的project对象提供的,project对象是构建的本质表现形式,其他属性都是用户自己定义的,要么来自属性文件或者命令行选项,要么是在直接构建脚本中定义的
2.6 gradle的守护进程
   i:通过加上选项  --daemon实现 ,并且守护进程在3小时空闲时间类会自动过期

3. 例子

例子1:
步骤一:本地新建一个build.gradle文件
步骤二:build.gradle文件添加如下内容

task helloworld <<{
    println "hello  world"
}
或者使用
task helloworld {
  dolast{
      println "hello  world"
  }
}

步骤三:在当前目录 命令行中执行gradle helloworld 看看效果

例子2:
同样上面的文件

task startSession <<{
    println "hello  world"
}

def chant (){
    ant.echo(message:'Repeat after me...')
}

3.times{
    task "gradle$it" <<{
        println 'gradle vison'
    }
}

gradle0.dependsOn startSession
gradle2.dependsOn gradle0, gradle1

task groupTherapy(dependsOn:gradle2)

然后命令行中执行gradle gT (这里使用的驼峰命名的缩写),看有什么效果(dependsOn这里是依赖关系)

执行命令gradle gradle1 grdle2 ,看看又有什么输出,有什么不同处?

阅读《Gradle实战》笔记

猜你喜欢

转载自blog.csdn.net/weixin_40792878/article/details/85196127