首页 > 解决方案 > Gradle:在我自己的任务中从导入的插件调用任务

问题描述

我习惯了 Maven,但目前我正在使用 Gradle,我不确定如何调用其他插件定义的任务。(编辑:我可以在 CLI 中调用这些任务,但我也想在我自己的自定义任务中调用它们。)

但我正在导入这个插件来格式化(并强制格式化)我的 Java 项目;我最感兴趣的任务是goJFverGJF

我尝试了几种方法来调用包含的任务,并且我做了更多的谷歌搜索。如果有帮助的话,我可以分享一些我尝试调用其他任务的(可能是令人尴尬的)方式,但我认为此时这可能是不必要的信息。

这是我的build.gradle

plugins {
    id 'java'
    // https://github.com/sherter/google-java-format-gradle-plugin
    id 'com.github.sherter.google-java-format' version '0.9'
}

group 'org.example'
version '1.0-SNAPSHOT'

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

repositories {
    mavenCentral()
}

dependencies {
    implementation("com.google.guava:guava:30.0-jre")
    testImplementation(platform('org.junit:junit-bom:5.7.0'))
    testImplementation('org.junit.jupiter:junit-jupiter:5.7.0')
}

// Alias for goJF:
task fmt  {
    goJF
}

// Alias for verGJF:
task vfmt {
    verGJF
}

test {
    useJUnitPlatform()
}

标签: javagradlegroovy

解决方案


这里的工作示例。

文档中,我们注意到有配置插件任务的示例。所以混叠是该方法的简化。考虑:

plugins {
    id 'java'
    // https://github.com/sherter/google-java-format-gradle-plugin
    id 'com.github.sherter.google-java-format' version '0.9'
}

import com.github.sherter.googlejavaformatgradleplugin.GoogleJavaFormat
import com.github.sherter.googlejavaformatgradleplugin.VerifyGoogleJavaFormat

group 'org.example'
version '1.0-SNAPSHOT'

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

repositories {
    mavenCentral()
}

dependencies {
    implementation("com.google.guava:guava:30.0-jre")
    testImplementation(platform('org.junit:junit-bom:5.7.0'))
    testImplementation('org.junit.jupiter:junit-jupiter:5.7.0')
}

task fmt(type: GoogleJavaFormat) {
}

task vfmt(type: VerifyGoogleJavaFormat) {
}

test {
    useJUnitPlatform()
}

fmt是一个新的类型任务GoogleJavaFormatvfmt是类型VerifyGoogleJavaFormat。这些实例可以指定自己的配置(并使用doFirstdoLast等做其他事情)。但按原样,它们充当别名。


推荐阅读