对于自定义eclipse 插件,如何将当前在 eclipse 包资源管理器中的项目包含到其类路径中。
这个自定义的 eclipse 插件正在尝试执行TestNG,但是在 eclipse 中打开的项目对 testNG 是不可见的。我希望在 eclipse 插件的当前类路径中包含项目将解决这个问题。
基本上它与以编程方式更改 Eclipse 插件的运行时类路径有关。
任何形式的帮助将不胜感激。
对于自定义eclipse 插件,如何将当前在 eclipse 包资源管理器中的项目包含到其类路径中。
这个自定义的 eclipse 插件正在尝试执行TestNG,但是在 eclipse 中打开的项目对 testNG 是不可见的。我希望在 eclipse 插件的当前类路径中包含项目将解决这个问题。
基本上它与以编程方式更改 Eclipse 插件的运行时类路径有关。
任何形式的帮助将不胜感激。
这不是一个完整的答案,但会帮助您思考您需要编写什么代码。
为具有插件性质的项目创建一个弹出菜单贡献,其标签类似于“将 Java 项目添加到类路径”。
在您的操作或命令处理程序中,这是我认为需要到位的代码:
获取对您选择的插件项目的参考。
创建一个列表,其中将包含工作区中所有打开的 Java 项目的列表。
确保将org.eclipse.core.resources
依赖项添加到您的捆绑包中。
通过调用获取工作区中的项目列表
ResourcesPlugin.getWorkspace().getRoot().getProjects();
对于每个项目调用if(project.getNature("org.eclipse.jdt.core.javanature")
不返回 null。
将项目添加到打开的 Java 项目列表中。还要确保您没有添加您选择的插件项目,因为它也具有 Java 特性。如果您只想添加 java 项目而不是插件项目,则需要额外检查它是否具有插件性质,如果是,则排除它。
现在有趣的部分。IWorkbenchWindowActionDelegate
如果您正在实现命令处理程序或接口,请获取对您的插件项目的引用。
因为插件项目也具有 java 特性,所以一旦您引用了插件 IProject,您就可以执行此操作
IJavaProject javaProject = JavaCore.create(mySelectedProject);
IClasspathEntry[] entries = javaProject.getRawClasspath();
List<IClassPathEntry> newEntries - new ArrayList<IClassPathEntry>();
// for each IProject in your active java project list.
foreach(IProject project: activeProjects) {
IJavaProject currentProject = JavaCore(project);
IPath srcPath= currentProject.getPath().append("target/generated-sources");
IClasspathEntry srcEntry= JavaCore.newSourceEntry(srcPath, null);
newEntries.add(srcEntry);
}
// after processing each open java project we found and adding a new IClassPathEntry we now set the
// updated class path entries on the selected plugin/java project.
newEntries.add(entries);
IClassPathEntry[] newEntryArray = newEntries.toArray(new IClassPathEntry[newEntries.size()]);
javaProject.setRawClassPath(newEntries, null)
现在我不完全知道的部分:将更改保存到磁盘,看看这篇文章: 使用 Eclipse 插件将修改后的 AST 保存在新文件中