本文链接:[使用IDEA开发Gradle插件 : 开发基本过程] http://blog.devwiki.net/index.php/2017/08/28/develop-gradle-plugin-use-idea-1.html
转载请注明出处,谢谢.
0x01 创建工程
1.打开 IDEA 新建工程,选择 Gradle
工程, 并选择 Groovy
,去除 Java
选项.
2.下一步填写 GroupId
和 ArtfactId
,然后下一步
3.勾选 Create separate module per source set
, 接着下一步
4.填写工程名称,并完成创建
5.创建完成后目录如下:
0x02 设置工程
1. 设置根目录 build.gradle
打开根目录下的 build.gradle
文件,修改如下:
group 'deveiki.net'
version '1.0-SNAPSHOT'
apply plugin: 'groovy'
repositories {
mavenCentral()
}
dependencies {
compile localGroovy()
compile gradleApi()
//compile 'org.codehaus.groovy:groovy-all:2.3.11'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
2. 实现 Plugin
类
在 src/main/groovy/<package_name>/
下创建 Plugin
的子类: DevWikiPlugin.groovy
,如下:
class DevWikiPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.extensions.create("devwiki", DevWikiPluginExtension)
}
}
DevWikiPluginExtension.groovy
内容如下:
/**
* 接收参数的类
*/
class DevWikiPluginExtension {
String message = 'Message'
}
3. 添加属性文件
在 /src/main/resources/META-INF/gradle-plugins/
目录下新建属性文件: DevWikiPlugin.properties
, 内容如下:
implementation-class=net.devwiki.plugin.DevWikiPlugin
4. 添加Task
在 /src/main/groovy/<package_name>/task/
目录下添加 DevWikiTask.groovy
, 内容如下:
class DevWikiTask extends DefaultTask{
DevWikiTask() {
group = 'devwiki'
description = 'devwiki first task'
}
@TaskAction
def devwiki() {
println "devwiki plugin: Hello World!"
}
}
然后修改 DevWikiPlugin.groovy
内容如下:
class DevWikiPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.extensions.create("devwiki", DevWikiPluginExtension)
project.tasks.create("devwiki", DevWikiTask)
}
}
5. 构建插件
在控制台执行: gradle build
, 或者在 Gradle 面板执行 build
任务
执行结果如下:
$ gradle build
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for deta ils
Generating JAR file 'gradle-api-4.0.jar'
:compileJava NO-SOURCE
:compileGroovy
:processResources
:classes
:jar
:assemble
:compileTestJava NO-SOURCE
:compileTestGroovy NO-SOURCE
:processTestResources NO-SOURCE
:testClasses UP-TO-DATE
:test NO-SOURCE
:check UP-TO-DATE
:build
BUILD SUCCESSFUL in 27s
3 actionable tasks: 3 executed
在根目录下会生成 /build
文件夹和 jar 文件:
0x03 改造工程
为了方便调试,将项目改为多 module 的 Project.
- 在项目根目录创建文件夹:
plugin
- 复制根目录下的
/src
目录下内容至plugin
目录 - 复制
build.gradle
文件至plugin目录
- 删除
.gradle, .idea, build, src
文件夹 - 修改根目录下的
build.gradle
如下:
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
- 修改
setting.gradle
内容内容如下:
include 'plugin'
- 关闭项目然后重新打开,让 IDEA 重新生成 .idea 和 .gradle 文件夹下文件.
- 执行
gradle build
或者在Gradle
面板执行build
任务,构建项目.
至此,项目已经改造成多 module 项目.
0x04 引用插件
由于没有发布到 JCenter 和 Maven ,所以采用文件引用方式.复制 Jar 文件到目标项目的根目录.
1. 新建sample module
对着根目录 devwiki_plugin
右键新建 module
, 选择 Gradle
类型,默认选择然后next
确保下图的红框处为根目录,如果不是点击最后面的文件夹图标选择.然后下一步.
使用默认值,直接点击完成
最后项目目录结构如下:
2. 添加引用插件
修改根目录的 build.gradle
内容如下:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath files("${rootDir}/plugin/build/libs/plugin-1.0-SNAPSHPT.jar") // 依赖本地文件,需要将jar文件放到项目根目录
}
}
allprojects {
repositories {
mavenCentral()
}
}
然后修改 sample 目录的 build.gradle
如下:
group 'devwiki.net.sample'
version '1.0'
apply plugin: 'java'
apply plugin: 'DevWikiPlugin'
sourceCompatibility = 1.8
dependencies {
}
然后使用 Gradle 面板刷新一下工程,在Gradle面板 sample module里面可以找到 devwiki task.
在控制台执行: gradle devwiki
, 结果如下:
C:\Dev\Workspace\IDEA\devwiki_plugin>gradle devwiki
Parallel execution with configuration on demand is an incubating feature.
> Task :sample:devwiki
devwiki plugin: Hello World!
BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
0x05 后记
至此,简单的 Gradle 插件开发基本完成,项目代码在此: Dev-Wiki/devwiki_plugin
参考文章: