版本
- gradle-4.8.1
插件
-
在Gradle中使用一个插件之前,需要应用(apply)它。插件的apply是通过Project.apply()方法来完成的
-
二进制插件: 即实现了org.gradle.api.Plugin接口的插件,可以有plugin id。二进制插件一般都是打包在一个jar里独立发布,比如自定义的插件,在发布的时候可以指定plugin id,这个plugin id一般是一个全限定名称,类似于包名,这样防止plugin id重复
1. 一般写法 apply plugin: 'java' 2. 完整写法 'java'是java插件的plugin id,它是唯一的,对应的类型是org.gradle.api.plugins.JavaPlugin。所以也可以这样写 apply plugin: org.gradle.api.plugins.JavaPlugin 3. 简短写法 因为org.gradle.api.plugins包是默认导入的,所以可以这样写 apply plugin: JavaPlugin
-
应用脚本插件,其实就是把脚本从其他地方加载进来(可以是本地或者网络上,网络需要使用HTTP URL)
apply from: rootProject.getRootDir().getAbsolutePath() + "/ext.gradle"
-
apply的三个方法
void apply(Closure closure); void apply(Action<? super ObjectConfigurationAction> action); void apply(Map<String, ?> options); 闭包方式的使用 apply { plugin 'java' }
-
如果要应用第三方发布的jar插件,在应用前必须先在buildscript里配置classpath才能使用。buildscript是为了在构建前准备和初始化相关配置依赖的地方,配置好所需的依赖,才可以应用插件,否则会提示找不到插件
buildscript { repositories { jcenter() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.1.1.RELEASE") } } apply plugin: 'org.springframework.boot'
-
Gradle2.1之后可以使用plugins DSL这种新的方式来应用插件
1. 内置插件,放在build.gradle开始处 plugins{ id 'java' } 2. 三方插件,前提是插件已经托管在https://plugins.gradle.org/上 plugins { id 'com.jfrog.bintray' version '0.4.1' }
-
如果是多项目构建,可能希望将插件应用于构建中的部分或全部子项目,而不是应用于根项目或主项目。
plugins{}块的默认行为是立即解析并应用插件。但是,使用apply false语法告诉Gradle不要将插件应用于当前项目,然后在子项目块中使用apply plugin:plugin id1. settings.gradle 配置 include 'helloA' include 'helloB' include 'goodbyeC' 2. build.gradle 配置 plugins { id "org.gradle.sample.hello" version "1.0.0" apply false id "org.gradle.sample.goodbye" version "1.0.0" apply false } subprojects { subproject -> if (subproject.name.startsWith("hello")) { apply plugin: 'org.gradle.sample.hello' } if (subproject.name.startsWith("goodbye")) { apply plugin: 'org.gradle.sample.goodbye' } }
-
插件管理,pluginManagement {}块可能只出现在settings.gradle文件中,它必须是文件中的第一个块,或者出现在初始化脚本中。
1. 在settings.gradle中配置。默认情况下plugins {} DSL 从https://plugins.gradle.org/下载,可以自定义插件私有仓库地址 pluginManagement { resolutionStrategy { } repositories { maven { url 'maven-repo' } gradlePluginPortal() ivy { url 'ivy-repo' } } } 2. 在init.gradle中配置 settingsEvaluated { settings -> settings.pluginManagement { resolutionStrategy { } repositories { } } }
常用插件
-
查看项目依赖报告
// 执行htmlDependencyReport 任务查看依赖报告 apply plugin: 'project-report'
-
检查项目中多个module的gradle依赖配置是否存在冲突,插件地址 https://github.com/bihe0832/Gradle-Dependencies-Check
buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "gradle.plugin.com.bihe0832:Gradle-Dependencies-Check-Plugin:1.0.9" } } apply plugin: "com.bihe0832.gradleDependenciesCheck" GradleDependenciesCheckConfig { /** * 检查结果提示类型: * 1 以warning形式在命令行提示 * 2 直接编辑报错,并提示错误 * 运行checkGradleDependencies 任务检查版本 */ showResultType = 1 }
-
可视化显示依赖图,插件地址https://github.com/vanniktech/gradle-dependency-graph-generator-plugin
buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "gradle.plugin.com.vanniktech:gradle-dependency-graph-generator-plugin:0.5.0" } } apply plugin: "com.vanniktech.dependency.graph.generator" 运行generateDependencyGraph任务
-
依赖管理插件https://docs.spring.io/dependency-management-plugin/docs/current/reference/html/
-
idea插件
apply plugin: 'idea' idea { module { downloadJavadoc = true downloadSources = true } } idea { module { downloadJavadoc = true downloadSources = true } }