Hello Gradle!

Gradle

  • Java的打包工具:Server或Android都可以使用。SpringBoot已经优先使用gradle
  • 基于Groovy语言,Groovy语言运行在JVM上,会编译为class文件,所以可以与Java兼容
  • 可以管理Android各模块依赖关系
  • 可以对Android或者Java项目做工程配置

Android工程结构

  • setting.gradle 配置那些module参与编译构建
include ':MyApp', //main module
        ':subMoudle',
        ':Base:Utils1', //文件夹Base下的module Utils1
        ':Base:Utils2'
  • 顶层build.gradle 各个module共享
//构建脚本(groovy语言)依赖的第三放插件和插件的代码仓库
buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

//Android项目(Java语言)依赖的第三放插件和插件的代码仓库
allprojects {
    repositories {
        google()
    }
}
  • app下build.gradle 具体模块的构建指令
//编译MainModule所依赖的子模块以及jar包的检索路径
dependencies {
    api fileTree(include: ['*.jar'], dir: 'libs')
    api project(':subModule1')
    api project(':subModule2')
}

自定义groovy插件

  • 直接在build.gradle中写逻辑:快速验证功能,复用性差
  • 作为groovy lib被build.gradle引用
    • 新建Android Module/Android Library
    • 除build.gradle文件外的其余文件全都删除
    • 新建文件夹src/main/groovy目录
    • 配置build.gradle
   apply plugin: 'groovy' //必选
   apply plugin: 'maven'
   dependencies {
       //依赖的jar包或者gradle插件
   }
  • 新建resources/META-INF/gradle-plugins/plugin.properties
  • 在文件中配置自定义插件的入口implementation-class=mypackage.MyPlugin
  • 实现MyPlugin
    class MyPlugin implements Plugin<Project> {
        void apply(Project project) {
            //自定义Task也可以引用其他groovy类的方法
            project.task('myTask') << {
                println "Hello world"
            }
        }
    }
  • 命令行或者IDE右侧Task列表执行:gradlew myTask