Zen*_*aro 13 java android gradle
基本上我有4个任务需要按顺序运行,但是我不能让它们这样做,我必须在命令行上逐个运行它,如下所示:
gradle :drmdexsecondary:compileReleaseJava --info --debug --stacktrace
gradle :drmdexsecondary:dexClasses --info --debug --stacktrace
gradle :drmdexsecondary:jar --info --debug --stacktrace
Run Code Online (Sandbox Code Playgroud)
这是我的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")
}
Run Code Online (Sandbox Code Playgroud)
我的问题基本上是:1.dependsOn关键字不起作用...它只是被忽略而没有任何日志消息2. taskname.execute()
函数不起作用...它只是被忽略而没有任何日志消息3. compileReleaseJava
在构建内部无法识别.gradle有这个特殊的错误:Could not find property 'compileJava' on task ':drmdexsecondary:dexClasses'.
有人请帮忙吗?我已经从文档中查阅并复制了粘贴,但它们似乎都没有用.我甚至试图重新安装gradle ...那里的示例代码很少,虽然我理解这个概念,但是将我的意图转换为工作的gradle代码似乎很难,所以如果有任何好的资源可以提供帮助,非常感谢...谢谢!
dit*_*kin 15
您应该阅读gradle任务以及有关任务的更多信息.你想依赖事物而不是调用事物.
另外我认为你应该阅读,并使用gradle android插件.
对于原始问题,在定义任务时,大括号之间的代码在配置时运行.执行任务时会运行任务的操作,并且必须将其添加到任务的操作列表中.这是通过使用任务的doFirst,doLast或<<运算符来完成的.
以下是gradle文档中的示例.
task taskX << {
println 'taskX'
}
task taskY << {
println 'taskY'
}
task taskZ << {
println 'taskZ'
}
taskX.dependsOn taskY
taskY.dependsOn taskZ
taskZ.shouldRunAfter taskX
Run Code Online (Sandbox Code Playgroud)
小智 6
task myTask1() {
println("this is task1 running")
}
task task2() { dependsOn myTask1
println("this is task2 running")
}
Run Code Online (Sandbox Code Playgroud)
当您执行 gradle task2时。
这将首先执行任务1,然后执行任务2
例如
task myTask1() {
println("this is task1 running")
}
task task2() { dependsOn myTask1
println("this is task2 running")
}
Run Code Online (Sandbox Code Playgroud)
上面的答案将不起作用任务 moveApkFileToProjectFolder 运行,将首先运行 buildMyApk。
我的示例任务,首先将构建 apk。然后将 apk 文件移动到我的 Project/apkFile 文件夹。并执行成功。
归档时间: |
|
查看次数: |
12641 次 |
最近记录: |