【问题标题】:How to execute gradle task如何执行gradle任务
【发布时间】:2017-02-24 09:57:36
【问题描述】:

我想从我的插件代码中执行 gradle 任务。

任何人都可以建议我,我如何以编程方式从代码执行 gradle 任务。

谢谢, 苏梅特。

【问题讨论】:

    标签: intellij-idea gradle plugins android-studio-plugin


    【解决方案1】:

    你可以这样做

    task a {
      doLast {
        println 'test'
      }
    }
    
    task b {
        doLast {
            a.execute()
        }
    }
    

    所以在插件代码中它可能类似于

    project.tasks.<taskname>.execute()
    

    但这在未来可能会改变。您应该依赖任务的链接,而不是直接调用它们。

    【讨论】:

    • 嗨,马丁,首先感谢您回答我的问题。我正在尝试应用您提供的解决方案,但目前尚未成功。我使用了 Project(com.intellij.openapi.project.Project) 的实例,然后尝试在该实例上调用任务,但无法在项目实例上获取任务。请您确认一下您在解决方案中提到了哪个项目类。
    • 实例正确。也许您调用它时的任务当时还不可用。没有看到代码很难相同。尝试致电project.tasks.findByName(name) 进行查找。如果它返回null,那么在不同的时间尝试它,比如在gradle.taskGraph.whenReady {taskGraph -&gt; project.tasks.findByName(name) }中调用它
    • 类 MyAction 扩展 AnAction { public void actionPerformed(AnActionEvent anActionEvent) { mProject=anActionEvent.getProject();路径=mProject.getBasePath(); ApplicationManager.getApplication().runWriteAction(runTasks()); } Runnable runTasks() { return new Runnable(){ public void run(){ CommandProcessor.getInstance().executeCommand(mProject, new Runnable() { public void run() { try { List tasks=new ArrayList(); String taskname=Constant.MY_TASK; tasks.add(taskname); mProject. } 这里我没有在最后一行获得 mProject 实例的任务...
    • 请为此打开一个新问题。我的回答回答了你的第一个问题,所以请将其标记为答案。我可以尝试在不同的线程中帮助你,通过 cmets 在这里很难做到。
    • 是的,当然,我可以理解,但我面临的唯一问题是我无法在您的解决方案“project.tasks”上获得任务......按点(。 ) 到 IDE 中,它应该将任务显示为建议,但它没有发生......
    【解决方案2】:

    Martin Linha 提供的答案不再适用于最新版本的 Gradle,例如 Gradle 7。Task 类不再具有 execute 方法。相反,必须执行活动。此外,您可能还想执行依赖项:

    void executeTask(Task task) {
        task.taskDependencies.getDependencies(task).each {
           subTask -> executeTask(subTask)
        }
        task.actions.each { it.execute(task) }
    }
    

    请注意,这仍然是一个 hack,不能保证有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      相关资源
      最近更新 更多