2017-02-24 7 views
0

내 플러그인 코드에서 gradle 작업을 실행하고 싶습니다.gradle 작업을 수행하는 방법

어느 누구도 나를 제안 할 수 있습니다. 프로그래밍 방식으로 코드에서 gradle 작업을 수행하는 방법은 무엇입니까?

감사합니다. Sumeet. 이

project.tasks.<taskname>.execute() 

비슷한 수 있습니다 플러그인 코드에 따라서

task a { 
    doLast { 
    println 'test' 
    } 
} 

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

을 다음 그러나 이것은 미래에 변경 될 수로

답변

1

당신은 그것을 할 수 있습니다. 작업을 직접 호출하는 대신 작업의 연결에 의존해야합니다.

+0

안녕 마틴, 먼저 내 질문에 대한 응답 주셔서 감사합니다. 귀하가 제공 한 솔루션을 적용하려하지만 현재로서는 성공하지 못했습니다. Project (com.intellij.openapi.project.Project)의 인스턴스를 사용한 다음 해당 인스턴스에서 작업을 호출하려고했지만 프로젝트 인스턴스에서 작업을 가져올 수 없습니다. 당신이 당신의 솔루션에 어떤 프로젝트 수업을 추천했는지 정확하게 알려주시겠습니까? – sumeet

+0

인스턴스가 정확합니다. 어쩌면 당신이 그것을 부를 당시의 작업은 아직 그 시간에 사용할 수 없습니다. 코드를 보지 않고도 동일하게 어려움. 'project.tasks.findByName (name)'을 호출하여 그것을 검색해보십시오. null을 돌려 주면,'gradle.taskGraph.whenReady {taskGraph -> project.tasks.findByName (name) }' –

+0

클래스 MyAction extends AnAction { } 내에서 호출하는 것과 같이 다른 시간에 시도해보십시오. public void actionPerformed (AnActionEvent anActionEvent) { mProject = anActionEvent.getProject(); 경로 = mProject.getBasePath(); ApplicationManager.getApplication(). runWriteAction (runTasks()); } 의 Runnable runTasks() {반환 새의 Runnable() { 공공 무효 실행() { CommandProcessor.getInstance(). ExecuteCommand를 (mProject, 새의 Runnable() {공공 무효 실행() { 시도 { 목록 작업 = 새로운 ArrayList를 (); 문자열 여기서 taskname = Constant.MY_TASK, tasks.add (여기서 taskname). mProject } 여기에 내가 마지막 줄에 mProject 인스턴스에서 작업을 받고 있지 않다는 ... – sumeet