创建Gradle工程
apply plugin: ‘groovy’ //如果你使用java开发,可以换成java apply plugin: ‘maven’ //依赖管理;上传你的jar到仓库中 version = 1.0 group = 'com.zjzhai' archivesBaseName = 'jshint-gradle' repositories.mavenCentral()
加入依赖
dependencies { compile( gradleApi() ) }
实现gradle插件类
class JshintPlugin implements Plugin<Project>{ void apply(Project project) { // 插件逻辑..... // 读取配置。jshint为例子 project.extensions.create("jshint", JshintConfig) project.task('jshint') << { // task逻辑 // println 打印日志 if (hasError) { //抛出异常,既构建失败 throw new RuntimeException("Jshint Failure!") } } } } `project.task('jshint')`中的`jshint`指的是这个插件下的task名。
定义插件入口
在
src/main/resources/META-INF/gradle-plugins/
中添加一个properties文件:jshint-gradle.properties
文件。jshint-gradle
为插件名。使用此插件时就是apple plugin 'jshint-gradle'
。在文件中定义入口:
'implementation-class=com.zjzhai.gradle.jshint.JshintPlugin'
打包上传
uploadArchives { repositories.mavenDeployer { repository(url: 'file:/Users/xxxx/.m2/repository') } }
url指定仓库地址
执行命令上传:
gradle uploadArchives
使用插件
apply plugin: 'jshint-gradle' jshint { inputDirs = file('src/main/resources').path includes = ["asset/*.js"] excludes = ["**/compase/*.js"] }
路径使用的是ant path语法
可以看到这里的
jshint
与project.extensions.create("jshint", JshintConfig)
的对应。而JshintConfig类是一个Bean:class JshintConfig { def inputDirs def includes def excludes }
使用时命令:
gradle jshint
自己写一个Gradle插件
最新推荐文章于 2024-03-10 15:46:50 发布