【Gradle】Gradle插件
Gradle插件
插件的作用
把插件应用到项目中,插件会扩展项目的功能,帮助在项目构建过程中做很多事情。
1、可以添加任务到项目中,帮助完成测试、编译、打包等。
2、可以添加依赖配置到项目中,可以通过它们配置项目在构建过程中需要的依赖,如编译时依赖的第三方库等。
3、可以向项目中现有的对象类型添加新的扩展属性、方法等。
4、可以对项目进行一些约定,如应用Java插件后,约定src/main/java目录是我们的源代码存在位置,在编译的时候也是编译这个目录下的Java源代码文件。
如何应用一个插件
插件的应用都是通过Project.apply()方法完成的。
应用二进制插件
二进制插件就是实现了org.gradle.api.Plugin接口的插件,它们可以有Plugin id。
apply plugin:'java'
上面的语句,其中'java'就是Java插件的plugin id,它是唯一的。其实它对应的类型是org.gradle.api.plugins.JavaPlugin,所以通过该类型,我们也可以应用这个插件:
apply plugin:org.gradle.api.plugins.JavaPlugin
又因为包org.gradle.api.plugins是默认导入的,所以可以去掉包名直接写成:
apply plugin:JavaPlugin
应用脚本插件
build.gradle
apply from:'version.gradle'
task task1{
println "版本是:${versionName},版本号是:${versionCode}"
}
version.gradle
ext{
versionName = '1.0'
versionCode = 1
}
apply方法的其他用法
Project.apply()方法有三种使用方法:
void apply(Map<String,?> options);
void apply(Closure closure);
void apply(Action<? super ObjectConfigurationAction> action);
闭包的方式如下:
apply{
plugin 'java'
}
Action方式:
apply (new Action<ObjectConfigurationAction>){
@Override
void execute(ObjectConfigurationAction objectConfigurationAction){
objectConfigurationAction.plugin('java')
}
}
应用第三方发布的插件
第三方发布的jar的二进制插件,我们在应用的时候,必须要先在buildscript{}里配置其classpath才能使用。
buildscript{
repositories{
jcenter()
}
dependencies{
classpath 'com.android.tools.build:gradle:1.5.0'
}
}
buildscript{}是一个构建项目前,为项目进行前期准备和初始化相关配置依赖的地方,配置好所需的依赖,就可以应用插件了
apply plugin:'com.android.application'
使用plugins DSL应用插件
plugins{
id 'java'
}
更多好用的插件
可以在https://plugins.gradle.org/ 上找到,也可以在github上找。
自定义插件
自定义插件必须实现Plugin接口,这个接口只有一个apply方法,该方法在插件被应用的时候执行。
定义在build脚本文件里:
apply plugin:CustomPlugin
class CustomPlugin implements Plugin<Project>{
void apply(Project project){
project.task('customTask').doLast{
println '这是一个通过自定义插件方式创建的任务。'
}
}
}
这种只能在自己项目里用,如果想开发一个独立的插件给所有想用的人,则需要创建单独工程来开发自定义插件了。
新建一个Android Module
清空Module的build.gradle内容,添加以下内容,配置开发所需的依赖:
apply plugin: 'groovy'
dependencies {
implementation gradleApi()
implementation localGroovy()
}
然后实现依赖类:
删除src/main目录下的所有文件,新建一个groovy文件夹,在这个文件夹新建包,如com.wangyz.plugins,然后在这个文件夹下,新建一个类,如:CustomPlugin.groovy,内容如下:
package com.wangyz.plugins
import org.gradle.api.Plugin
import org.gradle.api.Project
class CustomPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.task('CustomTask').doLast {
println("这是一个通过自定义插件方式创建的任务")
}
}
}
在src/main文件夹下新建resources文件夹,然后在这个文件夹中新建META-INF文件夹,然后在这个文件夹下新建gradle-plugins文件夹,然后新建com.wangyz.plugins.customplugin.properties文件,文件名就是其它应用依赖的名。内容如下:
implementation-class=com.wangyz.plugins.CustomPlugin
写好后,我们配置发布:
在Module的build.gradle文件中,添加以下内容:
apply plugin: 'maven-publish'
publishing {
publications {
mavenJava(MavenPublication) {
groupId 'com.wangyz.plugins'
artifactId 'customplugin'
version '1.0.0'
from components.java
}
}
}
publishing {
repositories {
maven {
// change to point to your repo, e.g. http://my.org/repo
url uri('/home/wangyz/repos')
}
}
}
然后在控制台,输入以下指令:
./gradlew publish
发布成功后,配置引用:
在需要引入依赖的工程根目录下的build.gradle添加以下内容:
buildscript {
repositories {
maven {
//local maven repo path
url uri('/home/wangyz/repos')
}
}
dependencies {
//这里配置为发布时填写的:groupId:artifactId:version
classpath 'com.wangyz.plugins:customplugin:1.0.0'
}
}
在App的build.gradle下添加以下内容:
//这里的配置为:
apply plugin: 'com.wangyz.plugins.customplugin'
【Gradle】Gradle插件的更多相关文章
- [原创]使用Gradle的插件EnIDE build的时候,输出的中文总是乱码。
使用Gradle的插件EnIDE build的时候,输出的中文总是乱码.解决办法:在EnIDE的设置里面,设置JVM options GRADLE_OPTS 为:-Dfile.encoding=UTF ...
- AS 自定义 Gradle plugin 插件 案例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- gradle ssh 插件
org.hidetake.ssh Gradle SSH Plugin is a Gradle plugin which provides remote command execution and fi ...
- com.android.tools.build:gradle:X.XX.XX:gradle.jar 插件无法下载问题
在使用Android Studio 这个IDE时,出现com.android.tools.build:gradle:X.XX.XX:gradle.jar 插件无法下载问题 可能的原因就是网速不好或者依 ...
- Android gradle 自定义插件
Gradle 的插件有三种打包方式: 构建脚本:插件逻辑写在 build.gradle 中,适用于逻辑简单的任务,但是该方式实现的插件在该构建脚本之外是不可见的,只能用于当前脚本. buildSrc项 ...
- [Gradle] Gradle 构建 android 应用常见问题解决指南
转载地址:http://www.cnblogs.com/youxilua/p/3348162.html 1: 使用最新的gradle android插件 以前我们写的时候会这么写 dependenci ...
- gradle/gradle plugin/Android studio关系
gradle - 构建工具,存储于Users/stono/.gradle/wrapper/dists Adroid Studio- IDE Gradle plugin - 在AS中使用Gradle的插 ...
- Gradle | Gradle项目无法导入依赖包
Gradle | Gradle项目无法导入依赖包 背景 今天使用idea导入一个Gradle项目,使用 gradle build构建成功,但是项目还是无法正常导入依赖包,显示错误如下: 解决方案 后来 ...
- gradle入门(1-7)eclipse和gradle集成插件的安装和使用
一.安装gradle插件:buildship 1.安装插件 gradle默认的本地缓存库在c盘user目录下的.gradle文件夹下,安装好gradle后,可以添加环境变量GRADLE_USER_HO ...
- gradle 自定义插件 下载配置文件
1.新建Gradle项目: 2.建立src/main/groovy目录,并添加如下代码: ConfigPlugin.groovy package com.wemall.config import or ...
随机推荐
- vue 中 px转vw的用法
下面介绍最简单的用法 1 下载依赖 npm install postcss-import postcss-loader postcss-px-to-viewport --save-dev 2 在项目根 ...
- Android 布局阴影实现
最近项目要求,ui有很多有关于阴影的设计要求,网上找了些实现方式,但都不是很理想.现在闲下来了,就寻思着自己写个阴影布局耍耍,以备后用.先说道说道我找到的几种阴影实现方式: 系统阴影 Andorid ...
- Navicat Premium从远程Mysql数据库复制到本地数据库的方法
之前做在本地测试总是先去现在下一份数据库的sql,然后再在本地建一个相同的,导入sql.然后觉得有点麻烦,现在发现了一个直接远程直接复制一份到本地的方法 工具:Navicat Premium 1.先连 ...
- 面试连环炮系列(十一):说说你们的分布式ID设计方案
说说你们的分布式ID设计方案 我们采用Snowflake算法,生成一个64bit的数字,64bit被划分成多个段,分别表示时间戳.机器编码.序号. 41位的时间序列(精确到毫秒,41位的长度可以使用6 ...
- css3 中的渐变
虽说css3 都已经使用多年了,但是关于css3的渐变用的很少.今天遇见了,就学习了一下. 首先我们打开ps,新建一个画布,选择渐变工具,这个时候我们能够看到顶栏上面的渐变类型如下 第一个我们选中的是 ...
- Fibonacci数Python的四种解法
1: # 计算Fibonacci数: # Naive版本,时间效率O(1.618^n) # 记忆化版本(增加line8.10.13),时间效率O(n) # 注意:当n超过1000,可能超过系统允许的最 ...
- NET Core 3.0 项目中使用 AutoFac
.net core 3.1 今天已正式发布,3.1跟3.0差别不是很大,主要是对 3.0一小部分修复和完善,最重要的是.NET Core 3.1是长期支持(LTS)版本,建议大家升级. .net co ...
- Python项目搬迁,快捷导出环境依赖包到requirements.txt
项目搬迁的时候,需要把当前的环境依赖包导出,然后到部署项目的服务器上安装依赖. 我们可以通过下面的命令执行,把依赖包导出到requirements.txt文件里. 生成requirements.txt ...
- vue项目在git commit时,使用eslint检测
用vue-cli3创建新项目可以自定义配置,选择eslint,所以eslint不需要配置, 项目根目录下面生成一个 .eslintrc.js文件,里面可以自定义配置eslint规则 现在在开发的时候, ...
- 团队项目之Scrum5
小组:BLACK PANDA 时间:2019.11.25 每天举行站立式会议 提供当天站立式会议照片一张 2 昨天已完成的工作 2 实现文章展示页面 完善后台的编辑功能接口 今天计划完成的工作 2 ...