建立新的Gradle构建

前言

本文的示例是在Windows环境下基于GroovyGradle构建。app

初始化项目

  1. 建立项目目录,目录名为basic-demo
  2. 在项目的命令行(例如个人当前目录就是G:\basic-demo)里面执行gradle init指令,遇到选项直接按回车键使用默认配置便可(这样默认建立的是基于Groovy脚本的项目)。执行成功输出关键内容以下:ide

    Get more help with your project: https://guides.gradle.org/creating-new-gradle-builds
    
    BUILD SUCCESSFUL in 1m 28s
    2 actionable tasks: 2 executed

项目结构

Gradle项目初始化成功后会生成一系列文件,内容以下所示(下面展现的是基于Groovy脚本的项目,基于Kotlin的项目,部分文件的文件名后缀为ktsgradle

├── build.gradle  
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar  
│       └── gradle-wrapper.properties  
├── gradlew  
├── gradlew.bat  
└── settings.gradle
  1. build.gradle用于配置当前项目的Gradle构建脚本
  2. gradle-wrapper.jarGradle Wrapper可执行JAR
  3. gradle-wrapper.propertiesGradle Wrapper的配置
  4. gradlew为基于Unix的系统的Gradle Wrapper脚本
  5. gradlew.bat为适用于WindowsGradle Wrapper脚本
  6. settings.gradle用于配置Gradle构建时的配置信息

建立任务

Gradle提供了经过Groovy或者Kotlin建立和配置任务的API,这些API也被称为任务库。ui

  1. 在项目的根目录建立一个src目录
  2. src目录建立一个myfile.txt文件,并在里面添加一行内容Hello, World!
  3. build.gradle文件新增一个名字为copy的任务,这个任务会将src目录的文件复制到dest目录(dest目录不存在时,任务会自动建立),关键代码以下插件

    task copy(type: Copy, group: "Custom", description: "Copies sources to the dest directory") {
        from "src"
        into "dest"
    }
    • task copy中的copy表示任务名称,为调用任务时的关键参数。
    • type为任务类型,Gradle提供了一系列封装好的任务API,这类选择使用的是任务库中Copy这个API,它能够将文件从一个位置复制到另外一个位置。
    • group为任务组,description为任务简介,目前暂时不须要用上,后面会介绍。
    • fromintoCopy API的两个参数,from表示数据源,into表示复制的目的地
  4. 调用copy任务,在控制台输入gradlew copy便可,执行结果以下:命令行

    BUILD SUCCESSFUL in 1s
    1 actionable task: 1 executed
  5. 若是须要调用其余任务只须要按照gradlew <task>格式便可调用对应的任务

使用插件

Gradle提供了一系列实用的插件,咱们能够在Gradle插件市场中检索须要的插件。code

下面将会经过使用base插件来进行演示ip

  1. build.gradle新增插件配置(须要注意插件配置内容要在文件最顶部)get

    plugins {
        id "base"
    }
  2. 添加一个将src目录中的文件打包成一个zip包的任务it

    task zip(type: Zip, group: "Archive", description: "Archives sources in a zip file") {
        from "src"
        setArchiveName "basic-demo-1.0.zip"
    }
    • task copy中的zip表示任务名称,为调用任务时的关键参数。
    • type为任务类型,Zipbase插件提供的API
    • group为任务组,description为任务简介,目前暂时不须要用上,后面会介绍。
    • fromsetArchiveNameZip API的两个参数,from表示数据源,setArchiveName表示打包后的压缩包名称
  3. 任务执行输出内容以下:

    BUILD SUCCESSFUL in 1s
    1 actionable task: 1 up-to-date

    而后就能够在根目录下的build\distributions目录下看到对应的压缩包了