java - Gradle:在我自己的任务中从导入的插件调用任务
问题描述
我习惯了 Maven,但目前我正在使用 Gradle,我不确定如何调用其他插件定义的任务。(编辑:我可以在 CLI 中调用这些任务,但我也想在我自己的自定义任务中调用它们。)
但我正在导入这个插件来格式化(并强制格式化)我的 Java 项目;我最感兴趣的任务是goJF
和verGJF
。
我尝试了几种方法来调用包含的任务,并且我做了更多的谷歌搜索。如果有帮助的话,我可以分享一些我尝试调用其他任务的(可能是令人尴尬的)方式,但我认为此时这可能是不必要的信息。
这是我的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()
}
解决方案
这里的工作示例。
从文档中,我们注意到有配置插件任务的示例。所以混叠是该方法的简化。考虑:
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
是一个新的类型任务GoogleJavaFormat
;vfmt
是类型VerifyGoogleJavaFormat
。这些实例可以指定自己的配置(并使用doFirst
、doLast
等做其他事情)。但按原样,它们充当别名。
推荐阅读
- typescript - 添加交叉点会导致奇怪的错误
- flutter - 地区不支持错误,Apple Pay,国家:印度,Flutter
- python - 使用python列出来自Windows任务调度程序的所有任务
- html - 显示有什么问题:我的代码中的 inline-block
- typescript - TypeScript 错误:类型 '{ user: any; 上不存在属性 'length' 密码:任何;}'
- mongodb - 如何将限制传递给 Mongoose db.collection.deleteMany
- ios - 为什么我的文件提供程序在文件应用程序中的位置是灰色的(非活动的)
- c++ - 调用从 Rust 接收命令行参数的 C++ 函数的问题
- verilog - 错误:[VRFC 10-2951]“WIDTH_DIFF”不是常数
- azure-devops - 如何自动化 - Azure DevOps - Boards Items / Work Items