Gradle

作者: 夜远曦白 | 来源:发表于2020-05-15 10:20 被阅读0次

    Gradle项目的创建方法

    • Ant工具:在2000年推出,是基于XML的构建工具,构建项目需要手动编写脚本

    • Maven工具:在2007年推出,在Ant基础上增加了依赖管理

    • Gradle工具:在2012年推出,在Maven基础上增加了DSL自定义扩展任务

    • Gradle 默认使用 groovy 脚本构建,从Gradle 4.0开始,Gradle正式支持Kotlin语言的构建

    • Gradle非常强大,可以构建任何项目,例如JavaEE、Android和前端等项目,并且还可以实现自动化构建和快速交付。

    1. 创建Gradle程序

    【File】→【New】→【Project】→【Gradle】 勾上【Java】

    1

    取名 →【Next】

    1. 配置Gradle程序
    2
    • 如果使用的Gradle版本为4.0或者4.0以下,则后续程序中的build.gradle.kts文件中的application就容易报错,并且右侧的Gradle projects窗口中的Tasks文件夹中没有application文件夹
    • Gradle版本最好是下载到本地再加载,不然Gradle的构建速度会比较慢(下载地址是“https://gradle.org/”,获取到对应的Gradle版本的压缩包后,接着将distributionUrl的值设置为如“File:///E:/tools/gradle-4.1-bin.zip”)
    • Gradle 4.1的版本对应的jdk版本为1.8

    默认IDEA使用的是groovy脚本构建的项目,将项目中的build.gradle文件重命名为build.gradle.kts。

    3 4

    mainClassName 对应的是程序入口类的绝对路径

    1. 创建Gradle程序中的功能类
    5 6
    1. 运行Gradle程序
    7 8
    • Java代码与Kotlin代码共存
    1. 配置build.gradle.kts文件
    1

    kotlin-stdlib.jar包是Kotlin的标准库
    repositories用于声明仓库,从jcenter仓库中下载依赖
    application中的mainClassName声明的是程序的入口,即为Main.java

    1. 创建Boy.kt
    2 3 run 结果

    Gradle的任务

    • Gradle本身的领域对象主要有Project和Task
    • Project为Task提供执行的容器和上下文
    • Project是Gradle的API中的一个接口,Gradle之所以可以工作,是因为在Gradle脚本中将代码以任务的方式插入到了Project中,Project执行这些任务,Gradle就开始工作了
    1. 在build.gradle.kts中创建一个task
    1

    task()方法中接收了两个参数,第1个参数是表示任务task的名称,这个名称设置为Helloworld,第2个参数是一个闭包,这个闭包中编写的是Kotlin的代码,主要是实现任务的内容,这个任务的内容是打印一个“Hello World!!!”字符串

    2 点击运行结果
    • 依赖管理是指如果一件事未完成,则下一件事就无法开始做,这两件事之间有依赖关系
    • 依赖的关系在程序中是通过dependsOn()方法来实现
    1 运行结果
    • Gradle任务的生命周期分为“扫描时”和“运行时”,扫描时任务的特点是扫描时所有任务都会执行,任务执行的先后顺序同build.gradle.kts文件中的任务代码顺序一致,哪个任务代码在前面就先执行哪个,与依赖顺序无关。如果想执行指定的任务,不执行其他无关的任务时,需要借助运行时任务来实现。运行时任务只在运行阶段执行,在扫描阶段不执行

    • Gradle中的任务默认都是扫描时任务,如果想使用运行时任务,则需要添加doFirst()高阶函数来实现

    • 扫描时的任务一般是用于声明程序中的变量,运行时的任务主要是用于执行程序中的业务逻辑

    1 2
    • tasks可以声明一个任务集,任务集可以将所有单独的任务放在一个集合中,便于管理多个任务

    • properties是项目中所有默认属性组成的一个Map集合

    1 结果
    • 增量式更新API:inputs表示输入,outputs表示输出
    • 当编译源码时,输入的是src目录下的代码,输出的是编译生成的class文件。如果输入或者输出中有改变,才会执行updateTask任务

    Gradle的扩展与依赖管理

    1
    • 加个依赖,会把它依赖的依赖包自动添加到项目
    依赖 maven center 找到需要的版本依赖到项目中
    • testcompile声明的是测试时依赖,测试时依赖只在测试阶段使用,在项目打包上线时不依赖,这样可以使项目的体积变小
    1
    • 扩展 Copy 任务,实现将 src 目录中的文件复制到 temp 目录中
    copy
    • from()方法用于声明源目录,into()方法用于声明目标目录,如果目标目录不存在时,程序会自动创建这个目录

    • 扩展Delete任务,实现删除temp目录

    delete
    • 扩展Jar任务,将class文件生成Jar包并存放在temp目录
    1
    • include()方法主要用于设置文件的类型为class,将out/production/classes目录下的class文件生成my.jar包,并保存到temp目录下

    • gradle可调用外部命令来操作Java的字节码文件

    1 2

    在“Gradle projects”窗口下方的other文件夹中,双击compileJava可以运行Hello类中的main()方法,运行成功之后,在项目的build/classes/java/main目录下可以看到生成的一个Hello.class字节码

    将生成的Hello.class文件复制到当前的工程目录中,也就是与build.gradle.kts文件在同一个目录中,接着只需要修改build.gradle.kts文件中的内容就可以运行该字节码文件

    1

    Javaexec表示执行一个Java命令,main表示要执行的类的名称Hello,classpath表示字节码文件所在的目录,classpass()方法中的参数"."表示字节码文件的位置在当前的工程目录中

    相关文章

      网友评论

          本文标题:Gradle

          本文链接:https://www.haomeiwen.com/subject/zzgvnhtx.html