第二十三天:再探 Gradle Plugin

今天要继续撰写 Gradle Plugin,我们会延续昨天的范例 - 档案差异比对 Plugin。

建立专案结构

首先我们先来建立一个 Gradle Plugin 的专案结构,并初始化版本管理系统。

$ mkdir file-diff-plugin
$ cd file-diff-plugin
$ git init
$ gradle init

别忘了在专案根目录新增 .gitignore,把会自动产生、不需要加到版本管理的档案排除掉。

/.gradle
/.idea
/build

建立 Build Script

紧接着我们先将 Build Script 设定好。

plugins {
    id 'groovy'
    id 'java-gradle-plugin'
}
group = 'com.tomgregory'
version = '0.0.1-SNAPSHOT'
repositories {
    mavenCentral()
}
dependencies {
    testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0'
}
gradlePlugin {
    plugins {
        fileDiff {
            id = 'com.tomgregory.file-diff'
            implementationClass = 'com.tomgregory.plugins.filediff.FileDiffPlugin'
        }
    }
}
test {
    useJUnitPlatform()
}

目前的 Build Script 包括:

  • Groovy Plugin:撰写 Plugin 时要用的语言(也可以用 Java 或 Kotlin 开发)
  • java-gradle-plugin:为了 Plugin 开发需要设定各种设定档而需要的 Plugin
  • Spock 测试框架:为了要使用 Give-When-Then 这种 BDD 风格的测试,在这边使用 Spock 测试框架
  • Gradle Plugin 设定:设定 Pluguin ID 为 com.tomgregory.file-diff,这将用於测试及发布时做为 Plugin 的唯一值
  • Gradle 测试设定:Spock 版本使用最新版本的 JUnit 5,我们用 useJUnitPlatform() 在 Gradle 里设定

<<:  Day 28 | SQLite资料库(三)

>>:  【Day 13】MySQL Basics II

GitHub Advanced Security - 秘密扫描 (Secret Scanning)

Repository 最担心的事情莫过不小心加入 Secret,尤其是 Public Reposit...

[13th][Day5] 建立一个 daemon container

除了 交互式的 container(interactive container) 也能建立长期运行的...

TailwindCSS 从零开始 - Just In Time 模式的有趣功能

未来更新趋势 从官方文件可以看到在 JIT 模式中的 CSS 写法可以非常的多样且直觉,而未来 T...

Day3 - Canvas基础概论 II - 成为Canvas Ninja ~ 理解2D渲染的精髓!

Some Deeper Basics 图像的概念 我们在前面有说到,canvas本身是透过物件模型来...

DAY 12 SASS 间的相似之处

介绍完了前几天的 sass 各种用法,大家有没有觉得有些方法好像很类似? 像是 mixin 跟 ex...