向现有eclipse插件添加headless功能

向现有eclipse插件添加headless功能,eclipse,eclipse-rcp,eclipse-plugin,Eclipse,Eclipse Rcp,Eclipse Plugin,我有一个现有的Eclipse插件,它作为常规IDE插件运行,从GUI接收命令并在自定义视图中返回输出 我想添加一个功能,使也能够在headless模式下运行该插件,从命令行接收输入,并将输出发送到某个文件。除了现有的常规执行之外,是否有办法修改现有插件以支持该执行模式,或者我必须创建一个新的无头插件,只使用第一个插件的代码?这取决于您计划如何使用该插件以及主要问题:是否有这样的情况,您的UI依赖项不可用的地方,即是否存在没有SWT和RCP捆绑包的捆绑包配置 没有可用的UI 在这种情况下,您需要将

我有一个现有的Eclipse插件,它作为常规IDE插件运行,从GUI接收命令并在自定义视图中返回输出


我想添加一个功能,使也能够在headless模式下运行该插件,从命令行接收输入,并将输出发送到某个文件。除了现有的常规执行之外,是否有办法修改现有插件以支持该执行模式,或者我必须创建一个新的无头插件,只使用第一个插件的代码?

这取决于您计划如何使用该插件以及主要问题:是否有这样的情况,您的UI依赖项不可用的地方,即是否存在没有SWT和RCP捆绑包的捆绑包配置

没有可用的UI

在这种情况下,您需要将插件的headless部分提取到新插件中,然后新插件向其注册headless入口点。插件的UI部分取决于新插件,只需将UI请求委托给headless部分中的相应API即可

为了提供无头应用程序,您应该查看
org.eclipse.equinox.app.iaapplication
接口和相应的
org.eclipse.equinox.applications
扩展点。定义应用程序后,只需调用:

eclipse-应用程序

用户界面可用

更简单的情况。只需指定无头进入点,所有操作都将如前所述


然而,我的经验表明,迟早,出现需要拆分插件的情况时,根据插件的复杂性,它可能会造成比先前拆分插件更大的麻烦。

您能解释一下UI依赖项的可用性是什么意思吗?这意味着在没有SWT和RCP捆绑包的情况下,会有不同的捆绑包配置。例如,Eclipse过去使用所谓的basebuilder,它是Eclipse的精简版本,它排除了UI捆绑包,仅用于构建插件。这样的配置我认为缺少UI依赖性或者UI层本身。添加一个IpApple并通过选择一个不同的Eclipse应用程序来运行它似乎是有效的,尽管现在我因为你以前的经验而谨慎:无论如何,谢谢你的答案。你能看看这个问题吗?