从Java启动Gradle并在与主程序相同的JVM中运行它

时间:2014-11-08 14:03:05

标签: java eclipse spring gradle

我有一个Eclipse插件,它必须启动Gradle构建脚本。我目前使用SpringSource Eclipse插件。这是我的代码:

public void run(String project, String task) throws FastOperationFailedException, CoreException {  
    File projectLocation = new File(project).getAbsoluteFile();
    GradleProject gradleProject = GradleCore.create(projectLocation);

    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    System.out.println("MyWorkspace1: " + workspace.toString());
    TaskUtil.execute(gradleProject, null,  Arrays.asList("mytask"), new NullProgressMonitor());
 }

此代码工作正常。 Gradle流程已启动并履行其职责。但是,Gradle是在新的JVM中启动的。我需要在我的插件和Gradle进程之间传递对象,所以我需要让它们在同一个JVM上运行。有没有人知道这是否可行,或者我是否可以将对象传递给Gradle而不进行序列化?

更新

总体思路是创建一种将IJavaProjet传递给Gradle的方法。 MoDisco是一个模型驱动的逆向工程工具,我需要将其称为我的构建脚本的一部分。它只对IJavaProject实例进行操作,这些实例可以在Eclipse JVM中轻松检索,但很难获得。总而言之,我需要:

  1. 在Eclise插件中创建IJavaProject
  2. 将其传递给gradle,这将启动MoDisco作为任务
  3. 对上述任务的结果执行一些其他EMF操作
  4. (可选)将对象返回到我的Eclipse插件

0 个答案:

没有答案