2017-02-24 150 views
0

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

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

谢谢, Sumeet。

回答

1

在插件代码如下如此

task a { 
    doLast { 
    println 'test' 
    } 
} 

task b { 
    doLast { 
     a.execute() 
    } 
} 

它可能是类似于

project.tasks.<taskname>.execute() 

的东西,但是这可能会在未来改变你可以做到这一点。你应该依赖任务的链接,而不是直接调用它们。

+0

嗨马丁,首先感谢回答我的问题。我正在尝试应用您提供的解决方案,但目前尚未成功。我已经使用了Project(com.intellij.openapi.project.Project)的实例,然后尝试调用该实例上的任务,但无法在项目实例上获取任务。您能否确认您确切知道您的解决方案中涉及哪个项目类。 – sumeet

+0

该实例是正确的。也许当时你所说的任务尚不可用。没有看到代码很难相同。尝试通过调用'project.tasks.findByName(name)'查找它。如果它返回null,那么在不同的时间尝试它,就像在'gradle.taskGraph.whenReady {taskGraph - > project.tasks.findByName(name) }中调用它'' –

+0

class MyAction extends AnAction {public void actionPerformed(AnActionEvent anActionEvent ){ mProject = anActionEvent.getProject(); path = mProject.getBasePath(); ApplicationManager.getApplication()。runWriteAction(runTasks()); } 的Runnable runTasks(){ 返回新的Runnable(){ 公共无效的run(){ CommandProcessor.getInstance()。executeCommand(mProject,新的Runnable(){公共无效的run(){ 尝试{ 名单任务=新的ArrayList (); 字符串TASKNAME = Constant.MY_TASK; tasks.add(TASKNAME); mProject }这里我不是在最后一行越来越任务上mProject实例... – sumeet