2017-02-24 179 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