这篇文章主要目的是用来介绍plugin,为了对本身非常枯燥的内容进行说明,这里特意跟前面的文章一样,准备了一个更加枯燥的例子(如何使用gradle的java plugin来打出一个jar文件),在枯燥的的gradle的学习的旅程中添加一丝不那么烦躁的情绪。
gradle的plugin是什么
回答是什么的定义往往比较复杂,现在我们知道gradle是什么了,一个自动构建工具,但是它是如何支持java和groovy的编译构建呢?这是一个很好的问题,因为答案就是plugin。
不同的plugin提供了不同的功能,从这个角度上来说,gradle就是一个框架,而具体实现则是通过plugin来实现的,从某种意义上来说,maven的设计思路也是如出一辙。
我们不再谈论容易引起争执的设计思路是否一致的问题,至少下面的内容可以使得我们对于gradle的plugin的理解有一个开始:
gradle提供了一个用于构建的框架结构,具体的实际的构建通过不同的plugin来实现。
gradle有哪些plugin
相较于是什么的问题,有什么就没有任何分歧了,在当前稳定的gradle的4.10.2版本,gradle官方提供的plugin主要有如下这些:
用途 | Plugin名称 | 功能说明 |
---|---|---|
JVM语言和框架 | Java | 提供java项目的构建支持 |
JVM语言和框架 | Java Library | 提供java库的构建支持 |
JVM语言和框架 | Groovy | 提供groovy项目的构建支持 |
JVM语言和框架 | Scala | 提供scala项目的构建支持 |
JVM语言和框架 | Play | 提供playframework应用的构建支持 |
JVM语言和框架 | ANTLR | 提供使用ANTLR生成词法分析器的支持 |
打包与发布 | Application | 提供构建基于JVM的可运行的应用程序的支持 |
打包与发布 | WAR | 提供WAR文件结构的打包支持 |
打包与发布 | EAR | 提供EAR结构的J2EE应用的打包支持 |
打包与发布 | OSGi | 提供创建OSGi包的支持 |
打包与发布 | Maven Publish | 提供Maven兼容的仓库的发布支持 |
打包与发布 | Ivy Publish | 提供Ivy兼容的仓库的发布支持 |
打包与发布 | Legacy Maven Plugin | 对使用了legacy机制的制品发布到Maven兼容的仓库的支持 |
打包与发布 | Distribution | 提供ZIP或者tar文件发布方式的支持 |
打包与发布 | Java Library Distribution | 提供创建包含运行依赖的java库的zip文件的支持 |
代码分析 | Checkstyle | 可集成使用checkstyle进行代码检查 |
代码分析 | FindBugs | 可集成使用FindBugs用于代码检查 |
代码分析 | PMD | 可集成使用PMD用于代码检查 |
代码分析 | JDepend | 可集成JDepend用于代码检查 |