第 5 部分:编写构建脚本

第 5 部分:编写构建脚本

让我们分解插件的构建脚本

gradle/license-plugin/plugin/build.gradle.kts

plugins { (1)

`java-gradle-plugin` (2)

id("org.jetbrains.kotlin.jvm") version "1.9.0" (3)

}

repositories { (4)

mavenCentral() (5)

}

dependencies { (6)

testImplementation("org.jetbrains.kotlin:kotlin-test-junit5") (7)

testRuntimeOnly("org.junit.platform:junit-platform-launcher")

}

gradlePlugin { (8)

val greeting by plugins.creating { (9)

id = "license.greeting"

implementationClass = "license.LicensePlugin"

}

}

// Additional lines //

1

在 Kotlin DSL 中使用 KotlinSettingsScript 的 plugins{} 块

2

应用 Java Gradle 插件开发插件以添加对开发 Gradle 插件的支持

3

应用 Kotlin JVM 插件以添加对 Kotlin 的支持

4

使用 Project.repositories() 配置此项目的仓库

5

使用 Maven Central 解析依赖项

6

使用 Project.dependencies() 配置此项目的依赖项

7

使用 Kotlin JUnit 5 集成

8

在 Kotlin DSL 中使用 GradlePluginDevelopmentExtension 的 gradlePlugin{} 块

9

定义插件 id 和 implementationClass

gradle/license-plugin/plugin/build.gradle

plugins { (1)

id 'java-gradle-plugin' (2)

id 'groovy' (3)

}

repositories { (4)

mavenCentral() (5)

}

dependencies { (6)

testImplementation libs.spock.core

testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

}

gradlePlugin { (7)

plugins {

greeting {

id = 'license.greeting' (8)

implementationClass = 'license.LicensePlugin'

}

}

}

// Additional lines //

1

在 Groovy DSL 中使用 PluginDependenciesSpec API 的 plugins{} 块

2

应用 Java Gradle 插件开发插件以添加对开发 Gradle 插件的支持

3

应用 Groovy 插件以添加对 Groovy 的支持

4

使用 Project.repositories() 配置此项目的仓库

5

使用 Maven Central 解析依赖项

6

使用 Project.dependencies() 配置此项目的依赖项

7

在 Groovy DSL 中使用 PluginAware API 的 gradlePlugin{} 块

8

定义插件 id 和 implementationClass

增强构建功能的插件包含在其中

plugins {

id("java") // core plugin, no version required

id("org.some.plugin") version "2.8" // community plugin, version required

}

plugins {

id 'java' // core plugin, no version required

id 'org.some.plugin' version '2.8' // community plugin, version required

}

仓库部分让 Gradle 知道从哪里拉取依赖项

repositories {

mavenCentral() // get dependencies from the Maven central repository

}

repositories {

mavenCentral() // get dependencies from the Maven central repository

}

依赖项是构建应用程序或库的要求

dependencies {

// group: 'org.apache.commons', name: 'commons-lang3', version: '3.13.0'

implementation("org.apache.commons:commons-lang3:3.13.0")

}

dependencies {

// group: 'org.apache.commons', name: 'commons-lang3', version: '3.13.0'

implementation 'org.apache.commons:commons-lang3:3.13.0'

}

在此示例中,implementation() 表示必须将 commons-lang3 库添加到 Java 类路径中。

为 Gradle 项目声明的每个依赖项都必须应用于一个范围。也就是说,该依赖项在编译时、运行时或两者都需要。这称为配置,当依赖项仅在运行时类路径中需要时,使用 implementation 配置。

配置块(不要与上面的依赖项配置混淆)通常用于配置已应用的插件

gradlePlugin { // Define a custom plugin

val greeting by plugins.creating { // Define `greeting` plugin using the `plugins.creating` method

id = "license.greeting" // Create plugin with the specified ID

implementationClass = "license.LicensePlugin" // and specified implementation class

}

}

gradlePlugin { // Define a custom plugin

plugins {

greeting { // Define a plugin named greeting

id = 'license.greeting' // using the id

implementationClass = 'license.LicensePlugin' // and implementationClass

}

}

}

应用 java-gradle-plugin 时,用户必须使用 gradlePlugin{} 配置块配置他们正在开发的插件。

任务是在构建期间执行的工作单元。它们可以由插件或内联定义

val functionalTest by tasks.registering(Test::class) {

testClassesDirs = functionalTestSourceSet.output.classesDirs

classpath = functionalTestSourceSet.runtimeClasspath

useJUnitPlatform()

}

tasks.named("test") {

// Use JUnit Jupiter for unit tests.

useJUnitPlatform()

}

tasks.register('functionalTest', Test) {

testClassesDirs = sourceSets.functionalTest.output.classesDirs

classpath = sourceSets.functionalTest.runtimeClasspath

useJUnitPlatform()

}

tasks.named('test') {

// Use JUnit Jupiter for unit tests.

useJUnitPlatform()

}

在 Gradle init 生成的示例中,我们定义了两个任务

functionalTest:此任务使用 tasks.register() 注册。它为功能测试配置测试任务。

test:此任务使用 tasks.named() 配置现有 test 任务。它还配置任务以使用 JUnit Jupiter 进行单元测试。

相关推荐

TapTap官方正版
下载旧版本彩票365软件

TapTap官方正版

09-12 👁️ 8258
2025啫喱水十大品牌排行榜
BET体育365投注官网

2025啫喱水十大品牌排行榜

12-17 👁️ 6554
没有冷藏的酸奶可以喝吗
下载旧版本彩票365软件

没有冷藏的酸奶可以喝吗

06-23 👁️ 9380