插件的作用
把插件应用到你的项目中,插件会扩展项目的功能,帮助你在项目的构建过程中做很多事情。1.可以添加任务到你的项目中,帮你完成一些事情,比如测试、编译、打包。
2.可以添加依赖配置到你的项目中,我们们可以通过它们配置我们项目在构建过程中需要的依赖,比如我们编译的时候依赖的第三方库等。
3.可以向项目中现有的对象类型添加新的扩展属性、方法等,让你可以使用它们帮助我们配置、优化构建,比如 android{}
这个配置块就是 Android Gradle
插件为 Project
对象添加的一个扩展。
4.可以对项目进行一些约定,比如应用 Java
插件之后,约定 sr/main/java
目录下是我们的源代码存放位置,在编译的时候也是编译这个目录下的 Java
源代码文件。
这就是插件,我们只需要按照它约定的方式,使用它提供的任务、方法或者扩展,就可以对我们的项目进行构建。
如何应用一个插件
插件的应用是通过 Project.apply()
方法完成的,apply
方法有好几种用法,并且插件也分为二进制插件和脚本插件。
应用二进制插件
二进制插件就是现实了 org.gradle.api.Plugin
接口的插件,它们可以有 plugin id
,下面看一下如何应用一个 Java
插件:
apply plugin:'java'
'java'
是 Java
插件的 plugin id
, 它是唯一的。对于 Gradle
自带的核心插件都有一个容易记的短名,称其为plugin id
, 比如这里的 java
,其实它对应的类型是 org.gradle.api.plugins.JavaPlugin
,所以通过该类型我们也可以应用这个插件:
apply plugin: org.gradle.api.plugins.JavaPlugin
又因为包 org.gradle.api.plugins
是默认导入的,所以我们可以去掉包名直接写为:
apply plugin:JavaPlugin
以上三种写法都是等价的,第一种用的最多,第二种一般适用于我们在 build
文件中自定义的插件,也就是脚本插件。
二进制插件一般都是被打包在一个 jar
里独立发布的,比如我们自定义的插件,在发布的时候我们也可以为其指定 plugin id
,这个plugin id
最好是一个全限定名称,就像你的包名一样,这样发布的插件 plugin id
就不会重复,比如 org. flysnow tools plugin.XXX
应用脚本插件
build.gradle :
apply from: 'version.gradle'
task test << {
println " versionName is ${versionName} , versionCode is ${versionCode}"
}
version.gradle:
ext {
versionName = '1.0.0'
versionCode = 1
}
上述方式就可以把version.gradle
脚本加载进 build.gradle
,应用脚本插件用的是 from
关键字,后面跟脚本路径,字符串形式。
应用第三方发布的插件
第三方发布的作为 jar
的二进制插件,我们在应用的时候,必须要先在 buildscript{}
里配置其 classpath
才能使用,这个不像 Gradle
为我们提供的内置插件。比如我们的 Android Gradle
插件,就属于 Android
发布的第三方插件,如果要使用它们我们先要进行配置:
buildscript {
repositories{
jcenter()
}
dependencies {
classpath 'com. android. tools. build: gradle: 1.5.01'
}
}
buildscrip{}
是一个在构建项目之前,为项目进行前期准备和初始化相关配置依赖的地
方,配置好所需的依赖,就可以应用插件了。
apply plugin: 'com.android.application'
如果没有提前在 buildscript
里配置依赖的 classpath
,会提示找不到这个插件。但是有一种情况例外,如果该插件已经被托管在 htps://plugins. gradle. org/ 网站上,我们就不用在 buildscript
里配置 classpath
依赖了,直接使用 plugins
就可以应用插件。