gradle - 如何在 Android 项目中使用 2021 gradle Kotlin 语法构建之前运行任务

标签 gradle android-gradle-plugin gradle-kotlin-dsl

我读了很多像这样的问题的答案,但它们都非常古老,并且在 groovy 中使用晦涩/过时的语法和/或不适合 Android 项目。

我有一个任务。

tasks.register("asd") {
  doFirst {
    exec {

在 Android 中开始构建时如何运行它 app/build.gradle.kts文件?

我已经打印了 tasksproject.tasks名字和我已经尝试过

tasks.named("build").dependsOn(":asd")
tasks.named("app:build").dependsOn(":asd")
tasks.named(":app:build").dependsOn(":asd")
project.tasks.named("build").dependsOn(":asd")
project.tasks.named("app:build").dependsOn(":asd")
project.tasks.named(":app:build").dependsOn(":asd")

它要么失败,并显示 Task <name> not found in project或者什么也不做。

我尝试过 doFirst , doLast两者都没有(直接 exec ),但仍然没有。

最佳答案

所以我找到了正确的方法

android {
  project.tasks.preBuild.dependsOn("asd") 
}


tasks.register("asd") {
  doFirst {
    exec {}
  }
}

引用任务时不需要 :buildpreBuild 任务可从 (project.)tasks 访问。

doFirst 是必要的,否则它会无限循环。 tasks.register 允许任务在需要时运行,而不是立即运行,如果我们使用 create

就会发生这种情况

关于gradle - 如何在 Android 项目中使用 2021 gradle Kotlin 语法构建之前运行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70302976/

相关文章:

Android Build.gradle 同步失败,出现 NoSuchFieldError : FOR_COMPILE

gradle - 在Gradle 5 Kotlin DSL中构建项目后如何重命名文件

android - 如何为 Android Studio 中的单独模块生成签名的 APK?

java - 无法在 Android x86_64 上安装 JavaFX 应用程序

java - 直接在 IDE 中使用 build.gradle 依赖项

java - Gradle任务间歇性失败

android - 错误 :Cannot configure the 'publishing' extension after it has been accessed

android - 无法为 org.gradle.api.Project 类型的根项目 'compileSdkVersion' 获取未知属性 'Cropimg'。

kotlin - Gradle 扩展 : can plain Kotlin types be used instead of Property<T> for properties with simple values?

docker - 覆盖bmuschko Gradle Docker插件生成的整个默认Dockerfile