基本上,我有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()函数不起作用...它只是被忽略而没有任何日志消息
  • 在build.gradle中无法识别
  • compileReleaseJava并出现以下特定错误:Could not find property 'compileJava' on task ':drmdexsecondary:dexClasses'.

  • 有人可以帮忙吗?
    我已经查阅并复制了文档中的粘贴,但是它们似乎都不起作用。我什至尝试重新安装Gradle ...那里的示例代码很少,尽管我理解了这个概念,但将我的意图转化为可正常使用的Gradle代码似乎太困难了,因此,如果有什么好的资源可以帮助您,也将不胜感激。

    最佳答案

    您应该阅读有关gradle tasksmore 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/

    10-11 22:43
    查看更多