Skip to content

脚本插件

脚本插件是最简单的插件形式,将构建逻辑提取到单独的 .gradle.kts 文件中,通过 apply from 引入。

创建脚本插件

kotlin
// gradle/publishing.gradle.kts
plugins {
    `maven-publish`
}

java {
    withSourcesJar()
    withJavadocJar()
}

publishing {
    publications {
        create<MavenPublication>("maven") {
            from(components["java"])
        }
    }
    
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/${project.findProperty("githubUser")}/my-lib")
            credentials {
                username = System.getenv("GITHUB_ACTOR")
                password = System.getenv("GITHUB_TOKEN")
            }
        }
    }
}

应用脚本插件

kotlin
// build.gradle.kts
plugins {
    `java-library`
}

// 引入脚本插件
apply(from = "gradle/publishing.gradle.kts")

多个脚本插件组合

kotlin
// build.gradle.kts
apply(from = "gradle/publishing.gradle.kts")
apply(from = "gradle/quality.gradle.kts")
apply(from = "gradle/versioning.gradle.kts")

脚本插件访问项目属性

kotlin
// gradle/quality.gradle.kts
plugins {
    checkstyle
    jacoco
}

checkstyle {
    toolVersion = "10.12.5"
    // 访问根项目文件
    configFile = rootProject.file("config/checkstyle.xml")
}

脚本插件 vs 约定插件

特性脚本插件约定插件(buildSrc)
IDE 支持有限完整
类型安全有限
可测试性
复杂度
适合场景简单共享中复杂逻辑

下一步