gradle - 为什么Gradle中的某些任务没有显示为属性?

标签 gradle android-gradle-plugin

我想使默认的gradle任务之一依赖于自定义任务(在默认任务开始之前做一些工作),但是dependsOn构造似乎不适用于所有可用任务。例如:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.company.android.myapplication"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
        PlayStore {
        }
        Amazon {
        }
    }
}

task info << {
    println "Hello, Gradle"
}

// following dependsOn works just fine
assembleDebug.dependsOn info

// following line (uncommented) will cause error
//assembleAmazonDebug.dependsOn info

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.1'
}

在示例中,assembleDebug正常工作,但是取消注释assembleAmazonDebug行,则会收到错误消息:

Could not find property 'assembleAmazonDebug' on project ':app'.


gradlew tasks --all产生一长串任务,其中许多任务无法与dependsOn构造一起使用。

任务之间有一些关键区别,其中有些可以用作属性,有些不能用作属性?

最佳答案

这是因为某些任务是在脚本评估期间创建的,因此它们在配置时不可用,而仅在运行时可用。我不确定语法(是否可以在此级别的od评估中定义依赖项),但是请尝试:

project.afterEvaluate {
   assembleAmazonDebug.dependsOn info
}

应用所有插件并创建所有任务后,它将定义依赖关系。

关于gradle - 为什么Gradle中的某些任务没有显示为属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518043/

相关文章:

android - Android Studio 中 gradle-wrapper.properties 的用途是什么?

android - useLibrary 和build.gradle 中的编译文件 ('' ) 的原理有什么区别?

android - 使用环境变量时Android Gradle错误

Gradle:更改jdk

java - 在应用程序模块中使用库模块的依赖项

android-studio - 在安装新应用之前,自动卸载旧应用

eclipse - 使用Gradle设置项目依赖项

gradle - 从一台 PC 移动到另一台(window 到 mac)时出现 flutter 项目构建错误

android - 如何设置不在项目的 gradle.properties 中的代理设置?

java - 是否有任何理由在混合代码项目中使用 javac 而不是 groovyc?