Skip to content

Instantly share code, notes, and snippets.

@radimk
Created September 30, 2014 14:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save radimk/00f3fbe47722c24d8846 to your computer and use it in GitHub Desktop.
Save radimk/00f3fbe47722c24d8846 to your computer and use it in GitHub Desktop.
simple BuildAction used with Gradle ToolingAPI
package cz.kubacki.gradle.toolingaction;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.gradle.tooling.BuildAction;
import org.gradle.tooling.BuildActionExecuter;
import org.gradle.tooling.BuildController;
import org.gradle.tooling.GradleConnector;
import org.gradle.tooling.ProjectConnection;
import org.gradle.tooling.model.Model;
import org.gradle.tooling.model.gradle.BasicGradleProject;
import org.gradle.tooling.model.idea.IdeaModule;
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("hello");
ProjectConnection conn = new Main().connect("/home/radim/tmp/multiproject");
BuildActionExecuter<Map<String, Model>> runner = conn.action(new MyBuildAction());
Map<String, Model> result = runner.run();
System.out.println("result " + result);
conn.close();
}
private ProjectConnection connect(String path) {
System.out.println("project in " + path);
ProjectConnection connection = GradleConnector.newConnector()
.useGradleVersion("2.1")
.forProjectDirectory(new File(path))
.connect();
return connection;
}
private static class MyBuildAction implements BuildAction<Map<String, Model>> {
@Override
public Map<String, Model> execute(BuildController controller) {
Map<String, Model> result = new HashMap<>();
for (BasicGradleProject project : controller.getBuildModel().getProjects()) {
IdeaModule im = controller.findModel(project, IdeaModule.class);
result.put(project.getPath(), im);
}
return result;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment