Kotlin版本实现Gradle插件

这篇具有很好参考价值的文章主要介绍了Kotlin版本实现Gradle插件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kotlin版本实现Gradle插件

本文链接:https://blog.csdn.net/feather_wch/article/details/131746478文章来源地址https://www.toymoban.com/news/detail-572276.html

  • 创建一个Gradle项目,并选择Kotlin/JVM作为项目SDK。假设项目的名称为hello-plugin。
  • 在项目中创建一个新的源集,比如plugin,用于存放插件的源代码和资源。在src目录下创建一个plugin目录,并在其中创建一个kotlin目录和一个resources目录。
  • 在plugin源集中创建一个实现了Plugin接口的类,比如HelloPlugin。在src/plugin/kotlin/com/example目录下创建一个HelloPlugin.kt文件,内容如下:
package com.example

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.tasks.Exec

// 实现Plugin接口
class HelloPlugin : Plugin<Project> {

    // 重写apply方法
    override fun apply(project: Project) {
        // 在项目中添加一个hello任务,用于打印一句问候语
        project.tasks.register("hello", Exec::class.java) {
            it.commandLine("echo", "Hello from plugin!")
        }
    }
}
  • 在plugin源集中创建一个resources/META-INF/gradle-plugins目录,用于存放插件的属性文件。在该目录下创建一个hello.properties文件,内容如下:
# 指定插件类的全限定名
implementation-class=com.example.HelloPlugin
  • 在项目根目录下创建一个settings.gradle.kts文件,用于配置项目名称和版本号。内容如下:
// 配置项目名称
rootProject.name = "hello-plugin"
// 配置项目版本号
rootProject.version = "1.0.0"
  • 在项目根目录下创建一个build.gradle.kts文件,用于配置项目的构建逻辑。在这里,你需要添加一些依赖项,比如gradleApi()和kotlin(“stdlib”),以及一些任务,比如jar和publishToMavenLocal。内容如下:
plugins {
    // 应用java插件
    java
    // 应用kotlin插件
    kotlin("jvm") version "1.6.0"
    // 应用maven-publish插件
    `maven-publish`
}

// 配置源集
sourceSets {
    // 获取plugin源集
    val plugin by getting {
        // 设置编译输出目录
        output.setClassesDirs(files("$buildDir/classes/plugin"))
        // 设置资源输出目录
        output.setResourcesDir("$buildDir/resources/plugin")
        // 设置编译输入目录
        java.srcDir("src/plugin/kotlin")
        // 设置资源输入目录
        resources.srcDir("src/plugin/resources")
    }
}

// 配置依赖项
dependencies {
    // 添加gradleApi依赖项,用于访问Gradle API
    implementation(gradleApi())
    // 添加kotlin标准库依赖项,用于编译Kotlin代码
    implementation(kotlin("stdlib"))
}

// 配置jar任务,用于打包插件类和资源为jar文件
tasks.jar {
    // 设置jar文件名为项目名称-版本号.jar,比如hello-plugin-1.0.0.jar
    archiveFileName.set("${project.name}-${project.version}.jar")
    // 设置jar文件所在目录为build/libs目录
    destinationDirectory.set(file("$buildDir/libs"))
    // 从plugin源集中获取类和资源,并添加到jar文件中
    from(sourceSets["plugin"].output)
}

// 配置publishing扩展,用于发布插件到Maven仓库
publishing {
    // 配置发布到本地Maven仓库的方式
    repositories {
        mavenLocal()
    }
    // 配置发布的内容
    publications {
        // 创建一个MavenPublication类型的publication,并命名为pluginJar
        create<MavenPublication>("pluginJar") {
            // 设置groupId为com.example
            groupId = "com.example"
            // 设置artifactId为项目名称
            artifactId = project.name
            // 设置version为项目版本号
            version = project.version.toString()
            // 设置发布的artifact为jar任务生成的jar文件
            artifact(tasks.jar)
        }
    }
}
  • 在IDE中运行publishToMavenLocal任务,将插件打包成jar文件,并发布到本地Maven仓库。你可以在~/.m2/repository/com/example/hello-plugin/1.0.0目录下找到发布的文件,包括hello-plugin-1.0.0.jar和hello-plugin-1.0.0.pom。
  • 在另一个Gradle项目中,你可以使用plugins块来应用你开发的插件,比如plugins { id(“hello”) version “1.0.0” }。这样就可以使用插件提供的功能了,比如运行hello任务,打印一句问候语。

到了这里,关于Kotlin版本实现Gradle插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android Studio版本升级后的问题 gradle降级、jdk升级 Compose 与 Kotlin 的兼容性对应关系

    AGPBI: {“kind”:“error”,“text”:“Can’t determine type for tag ‘macro name=“m3_comp_switch_disabled_selected_handle_color”?attr/colorSurface’”,“sources”:[{“file”:“/Users/fausto/.gradle/caches/transforms-3/4948d05d0ff6027d2e3c9f4a6010103b/transformed/material-1.7.0-alpha02/res/values/values.xml”}],“tool”:“Resource and

    2024年02月04日
    浏览(78)
  • springboot gradle kotlin 多模块(或微服务)统一依赖及版本管理和构建不同环境打包task,docker镜像构建task

    在maven里可以在pom.xml中统一定义项目依赖,依赖版本,插件,多环境构建,子模块;定义packaging 为pom类型,各子模块按需引入,并且指定环境profiles构建。 在gradle中也可以实现依赖统一管理,各模块按需引入,区分环境的构建任务。 先上效果图 统一定义依赖,依赖版本,插

    2024年02月04日
    浏览(37)
  • Kotlin中的Gradle

    1.创建 左上角【File】-【New Project】-【Project】,出现以下画面,如下勾选 在配置Gradle时,需要连接网络下载资源,不然会出现配置失败的情况。 若在构建完毕后,左侧的路径中没有出现src包,可以在build.gradle文件中最外部添加如下内容(对应的是5.X版本的Gradle): 点击右侧

    2024年02月04日
    浏览(40)
  • Android开发中Gradle插件,Gradle版本与JDK版本之间的对应关系

    Gradle插件 Gradle版本 SDK Build Tools JDK版本 说明 8.2 8.1 17 8.1 8.0 17 8.0 8.0 30.0.3 17 7.4 7.5 30.0.3 11 7.3 7.4 30.0.3 11 7.2 7.3.3 30.0.3 11 7.1 7.2 30.3.30 11 4.2.0+ 6.7.1 30.0.2 8+ 4.1.0+ 6.5+ 29.0.2 8+ 4.0.0+ 6.1.1+ 29.0.2 8+ 3.6.0~3.6.4 5.6.4+ 28.0.3 8+ 3.5.0 - 3.5.4 5.4.1+ 28.0.3 8+ 3.4.0 - 3.4.3 5.1.1+ 28.0.3 8+ 3.3.0 - 3.3.3 4.10.1+ 28.0

    2024年03月20日
    浏览(72)
  • Gradle Kotlin DSL 打包带上依赖

    Gradle version Gradle 8.2.1 build.gradle.kts 参考 https://blog.csdn.net/setlilei/article/details/123173339

    2024年02月15日
    浏览(37)
  • android中gradle的kotlin编译配置选项

    1、Android中的配置 使用如下方式开启在Android中的gradle的kotlin编译配置: 该配置在其余平台不可用 以上配置会开启Kotlin/JVM 的上下文接收者原型功能,否则该功能不可用,开启后编码可以使用以下代码: 传递参数的发过誓可以直接在里面写 setFreeCompilerArgs([\\\"-opt-in=org.mylibrary.

    2024年02月07日
    浏览(43)
  • Android使用Gradle kotlin dsl 优雅配置构建项目

    Gradle的出现可以说是为Android的项目构建插上了翅膀,让Android的apk打包构建更简单高效。开发者可以自己去定义打包的过程,比如在打包的过程中进行字节码插桩,多渠道打包,在老版本的Android中还可以依赖Gradle实现APP的插件化开发。但是Gradle是使用Groovy语言开发的,虽然说

    2024年02月13日
    浏览(53)
  • Compose的gradle配置以及与Kotlin的兼容对应

    要开始使用Compose,需要先向项目中添加一些 build 配置。 将以下定义添加到应用的build.gradle.kts文件中: 此外,请将以下部分中您需要的Compose BoM和Compose库依赖项的子集添加到您的依赖项: 以下是Compose 与 Kotlin 的兼容性对应关系: Compose Compiler 版本 兼容的 Kotlin 版本 1.5.9 1

    2024年02月21日
    浏览(49)
  • Kotlin Plugin Version 和 Gradle Version 不匹配

    有些时候,尤其是打开别人的Kotlin项目时, Android Studio 会报错: otlin: The project is using an incompatible preview version (AGP XXX) of the Android Gradle plugin. Current compatible version is AGP XXX. 。这个问题其实是 Plugin version 和 Gradle version不匹配。 我们尝试了下面的方法,可以解决此问题: 首先,

    2024年02月12日
    浏览(48)
  • 解决Could not find org.jetbrains.kotlin:kotlin-gradle-plugin * 错误方法

    出现该错误的主要原因是当前仓库中没有适合的包,添加国内的maven源即可,具体方法如下: 在 Gradle Scripts-build.gradle 中添加以下国内镜像仓库,注意两个地方都要加: 全部代码:

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包