2017-02-24 3 views
0

Je voulais exécuter une tâche de gradation à partir de mon code de plugin. Tout un peut me suggérer, comment puis-je exécuter par programme la tâche gradle à partir du codeComment exécuter la tâche de gradation

Merci, Sumeet.

Répondre

1

Vous pouvez le faire comme suit

task a { 
    doLast { 
    println 'test' 
    } 
} 

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

donc dans le code du plugin, il pourrait être quelque chose de similaire à

project.tasks.<taskname>.execute() 

Mais cela pourrait changer à l'avenir. Vous devriez vous fier à l'enchaînement des tâches plutôt que de les invoquer directement.

+0

Salut Martin, tout d'abord merci d'avoir répondu à ma question. J'essaye d'appliquer la solution fournie par vous, mais ne réussis pas dès maintenant. J'ai utilisé l'instance de Project (com.intellij.openapi.project.Project), puis j'ai essayé d'appeler une tâche sur cette instance, mais je n'ai pas pu obtenir de tâche sur l'instance du projet. Pouvez-vous me confirmer exactement quelle classe de projet vous avez référée dans votre solution? – sumeet

+0

L'instance est correcte. Peut-être que la tâche au moment où vous l'appelez n'est pas encore disponible à ce moment-là. Difficile de même sans voir le code. Essayez de le rechercher en appelant 'project.tasks.findByName (name)'. Si elle retourne null, alors essayez à différents moments comme appeler dans un délai 'gradle.taskGraph.whenReady {taskGraph -> project.tasks.findByName (nom) }' –

+0

classe MonAction étend AnAction { public void actionPerformed (AnActionEvent anActionEvent) { mProject = anActionEvent.getProject(); path = mProject.getBasePath(); ApplicationManager.getApplication(). RunWriteAction (runTasks()); } Runnable runTasks() {return new Runnable() { public void run() { CommandProcessor.getInstance(). ExecuteCommand (mProject, nouvelle Runnable() {public void run() {try { Liste tâches = new ArrayList (); chaîne nom_tâche = Constant.MY_TASK; tasks.add (nom_tâche);. mProject } ici, je ne reçois pas tâche par exemple mProject dans la dernière ligne ... – sumeet