基本上,我有4个任务需要按顺序运行,但是我不能让它们按顺序运行,因此必须在命令行上逐个运行它:
gradle :drmdexsecondary:compileReleaseJava --info --debug --stacktrace
gradle :drmdexsecondary:dexClasses --info --debug --stacktrace
gradle :drmdexsecondary:jar --info --debug --stacktrace
这是我的build.gradle
:evaluationDependsOnChildren();
task dexClasses( type:Exec ) {
// compileJava.execute()
String cmdExt = Os.isFamily(Os.FAMILY_WINDOWS) ? '.bat' : ''
println("${buildDir}")
println("${androidSdkDir}\\build-tools\\${buildToolsVersion}\\dx${cmdExt} --dex --output=${buildDir}\\classes\\classes.dex ${buildDir}\\classes\\release")
commandLine "cmd", "/c", "${androidSdkDir}\\build-tools\\${buildToolsVersion}\\dx${cmdExt} --dex --output=${buildDir}\\classes\\classes.dex ${buildDir}\\classes\\release"
}
task jar(type: Jar) {
from ("${buildDir}\\classes\\classes.dex")
}
我的问题是这样的:dependsOn
关键字不起作用...它只是被忽略而没有任何日志消息taskname.execute()
函数不起作用...它只是被忽略而没有任何日志消息compileReleaseJava
并出现以下特定错误:Could not find property 'compileJava' on task ':drmdexsecondary:dexClasses'.
有人可以帮忙吗?
我已经查阅并复制了文档中的粘贴,但是它们似乎都不起作用。我什至尝试重新安装Gradle ...那里的示例代码很少,尽管我理解了这个概念,但将我的意图转化为可正常使用的Gradle代码似乎太困难了,因此,如果有什么好的资源可以帮助您,也将不胜感激。
最佳答案
您应该阅读有关gradle tasks和more about tasks的信息。您想依赖事物而不是调用事物。
另外,我认为您应该阅读并使用gradle android plugin。
最初的问题是,当您定义任务时,括号之间的代码将在配置时运行。任务的 Action 在执行任务时运行,并且必须添加到任务的 Action 列表中。这是通过使用任务的doFirst,doLast或<
这是gradle文档中的示例。
task taskX << {
println 'taskX'
}
task taskY << {
println 'taskY'
}
task taskZ << {
println 'taskZ'
}
taskX.dependsOn taskY
taskY.dependsOn taskZ
taskZ.shouldRunAfter taskX
关于java - 如何使任务一个接一个地执行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23880461/