为什么 Gradle 中的某些任务没有显示为属性?
Why do some tasks in Gradle not show up as properties?
我想让 default 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
}
它将在应用所有插件并创建所有任务后立即定义依赖关系。
我想让 default 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
}
它将在应用所有插件并创建所有任务后立即定义依赖关系。