gpt4 book ai didi

android - 为Gradle插件定义的任务创建依赖项

转载 作者:行者123 更新时间:2023-12-03 05:51:20 29 4
gpt4 key购买 nike

我在build.gradle文件中应用了gradle插件,该插件提供了三个任务(每个构建变体一个),并且我想确保每次构建任务完成时这些任务都能运行。此外,我创建了另一个任务,我想在其中一个插件任务完成时运行。这是到目前为止的gradle文件:

apply plugin: 'com.android.library'
apply plugin: 'com.jaredsburrows.license'

android {
buildToolsVersion rootProject.ext.buildToolsVersion
compileSdkVersion rootProject.ext.compileSdkVersion

defaultConfig {
minSdkVersion rootProject.ext.minimumSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion

// etc
}

buildTypes {
debug {
// etc
}

staging {
// etc
}

release {
// etc
}
}
}

task copyLicenseToSrc {
doLast {
// etc
}
}

build.finalizedBy(tasks.findByName('licenseDebugReport'))
tasks.findByName('licenseDebugReport').finalizedBy(copyLicenseToSrc)
jaredsburrows插件产生 license*Report任务。每当我尝试使用 tasks.getByName('licenseDebugReport)tasks.getByName('licenseReleaseReport)引用任务时,都会遇到未找到任务的异常。

这是任务 Pane 的屏幕快照,以供引用。

enter image description here

如何与插件定义的任务进行交互?

最佳答案

似乎插件添加了延迟的那些任务。

您可以尝试一下我想到的三件事。

1. 尝试进一步延迟,在afterEvaluate { }块中进行依赖项设置,该块将在评估项目后执行,但仍在配置阶段内。

2. 您可以使用LicenseReportTask来仅对tasks.withType(LicenseReportTask) { build.finalizedBy it; it.finalizedBy copyLicense }类型的所有任务进行操作。该操作将立即在该类型的所有现有任务上执行,并在将来添加的所有任务上立即执行。

3. 您可以使用插件使用的相同机制,尝试通过android.libraryVariants.all { variant -> build.finalizedBy tasks."license${variant.name.capitalize()}Report"; tasks."license${variant.name.capitalize()}Report".finalizedBy copyLicense }使其正常工作

关于android - 为Gradle插件定义的任务创建依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47594155/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com