我有一个非常简单的 build.gradle
文件,内容如下:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.1'
}
}
apply plugin: 'android'
android {
buildToolsVersion "17.0.0"
compileSdkVersion 17
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}
task generateSources {
doFirst {
def script = "python GenerateSources.py".execute()
script.in.eachLine {line -> println line}
script.err.eachLine {line -> println "ERROR: " + line}
script.waitFor()
}
}
我想要的是在 java 编译开始之前运行 generateSources
任务。我找到了几种解决方案,例如 compileJava.dependsOn("generateSources")
,但不幸的是它们给出了错误:
A problem occurred evaluating root project 'Android'.
> Could not find property 'compileJava' on root project 'Android'.
我不了解 Gradle,也无法理解这段代码有什么问题。所以我想知道如何解决这个错误。
最佳答案
显然,android
插件不会添加 compileJava
任务(就像 java
插件那样)。您可以使用 gradle tasks --all
检查哪些任务可用,并为您的(否则正确的)依赖项声明选择正确的任务。
编辑:
显然,android
插件延迟了任务的创建,因此不能像往常一样急切地访问它们。解决此问题的一种方法是将访问推迟到配置阶段结束:
gradle.projectsEvaluated {
compileJava.dependsOn(generateSources)
}
可能有一种更惯用的方法来解决您的用例,但请快速浏览 Android plugin docs我找不到。
关于android - 使用 Android Gradle 插件编译前运行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16853130/