基本上我有 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
在 build.gradle 中无法识别并出现此特定错误:Could not find property 'compileJava' on task ':drmdexsecondary:dexClasses'。
有人愿意帮忙吗?
我已查阅文档并从文档中复制粘贴,但它们似乎都不起作用。我什至尝试重新安装 Gradle...那里的示例代码很少,虽然我理解这个概念,但似乎很难将我的 Intent 转化为工作的 Gradle 代码,所以如果有任何好的资源可以提供帮助,也将不胜感激。
最佳答案
你应该阅读 gradle tasks和 more about tasks .您想依赖事物而不是调用事物。
此外,我认为您应该阅读并使用 gradle android plugin .
对于您最初的问题,当您定义任务时,大括号之间的代码在配置时运行。任务的操作在任务执行时运行,并且必须添加到任务的操作列表中。这是通过使用任务的 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/