创建Eclipse快捷方式以运行构建文件的特定目标

时间:2011-11-10 04:53:24

标签: java eclipse keyboard-shortcuts

我有不同的项目和几个包含不同目标的构建文件 通常,如果我想运行目标,我将使用导航到“Ant”视图,然后选择构建文件,然后选择要运行的目标。

不是每次都做几个步骤,有没有办法为特定目标分配键盘快捷键,以便我可以轻松地运行该目标。

3 个答案:

答案 0 :(得分:1)

键的主要首选项页面可以在 Window>下找到。偏好>一般>键(或更快:按 Ctrl + 3 ,键入Keys并按Enter键)。请参阅How to manage keyboard shortcuts in Eclipse and why you should文章以实现您的目标。

答案 1 :(得分:0)

注意:这是我最初放弃的“ 实用宏+ Beanshell脚本”技术。我更喜欢第二答案中提到的另一种技术。

我也一直在寻找一种针对特定目标的方法。唯一可用的内置快捷方式是“重新构建最后一个目标”,如果您经常在目标之间进行交换,那么这并不是很有用。

虽然我还没有具体的解决方案,但我正在努力。

我正在评估“实用宏”插件。它具有为宏分配快捷键的功能。它还具有将宏定义为beanshell脚本的功能。

因此,剩下的就是弄清楚哪种beanshell脚本能够运行特定的make目标。

我试图通过EASE脚本工具探索Eclipse API。

我将分享有关如何以编程方式(通过其javascript界面​​)成功运行目标的步骤/说明:

targetmanager = org.eclipse.cdt.make.core.MakeCorePlugin.getDefault().getTargetManager()

projects = targetmanager.getTargetBuilderProjects()

folder = projects[0].getFolder("Path/To/My/Build/Targets/")

// targets = targetmanager.getTargets(folder)
target = targetmanager.findTarget(folder, "MyBuildTargetName")

target.build(new org.eclipse.core.runtime.NullProgressMonitor())

所以我认为剩下的就是我(或其他有兴趣的人)去做的事情:

  • 将此脚本从javascript转换为beanshell,并通过“ Practically Macro”插件将其添加为宏
  • 为其分配快捷键

...很多相关的解决方法,因此,如果有人有任何更简单的选择,我很乐意听到。

更新

FWIW,我设法以这种形式为“ Practically Macro”创建了一个bean脚本:

//Scripts are beanshell format (see http://www.beanshell.org/)

//variable               type
//styledText             the org.eclipse.swt.custom.StyledText instance for the current editor
//console                write output to the macro console via console.write(String), .writeln(String), .write(Exception)
//findTarget             the instance of org.eclipse.jface.text.IFindReplaceTarget
import org.eclipse.swt.custom.StyledText;
import org.eclipse.jface.text.IFindReplaceTarget;

c = org.eclipse.core.runtime.Platform.getBundle("org.eclipse.cdt.make.core").loadClass("org.eclipse.cdt.make.core.MakeCorePlugin");
m = c.getMethod("getDefault", null);
dflt = m.invoke(null, null);

targetmanager = dflt.getTargetManager();

projects = targetmanager.getTargetBuilderProjects();

folder = projects[0].getFolder("Path/To/My/Build/Targets/");

target = targetmanager.findTarget(folder, "MyBuildTargetName");

target.build(new org.eclipse.core.runtime.NullProgressMonitor());

是的,它确实可以完成某些工作,但是唯一的麻烦是,Eclipse无需任何刷新即可停止工作。只有在构建完成之后,控制台窗格才会使用最终的构建输出(一击中)进行更新,并且Eclipse再次变得响应。

所以它不是完美的,但是我想它是我追求的方向上的渐进式进展...至于在构建过程中导致此冻结/停顿的原因,我不能肯定地说,但我怀疑实际上宏插件会锁定Eclipse,直到宏完成为止。

下次:

也许如果我有另一个时间窗口可以再次查看它,我会尝试查看是否可以通过键盘快捷键触发EASE-javascript脚本。该页面似乎暗示可能:

https://wiki.eclipse.org/EASE/Scripts

答案 2 :(得分:0)

好吧,我已经尝试了“ EASE脚本+键盘快捷键”技术,效果更好:

我在工作区/项目的底部创建了一个“ my_build_target.js ” JavaScript文件:

/**
 * keyboard: Alt+Shift+2
 */

targetmanager = org.eclipse.cdt.make.core.MakeCorePlugin.getDefault().getTargetManager()

projects = targetmanager.getTargetBuilderProjects()

folder = projects[0].getFolder("Test/Scenarios/Win32")

// targets = targetmanager.getTargets(folder)
target = targetmanager.findTarget(folder, "MyBuildTargetName")

target.build(new org.eclipse.core.runtime.NullProgressMonitor())

请注意在标题注释中使用“魔术关键字”,它指定了所需的脚本快捷键。

然后,您需要转到以下位置来指定要加载脚本的位置:

  • Windows >>首选项>>脚本>>脚本位置

我个人单击了“ 添加工作区”按钮,并指定了工作区/项目的基础(这是我存放脚本的位置)。

我重新启动Eclipse,然后使用我指定的“ Alt + Shift + 2 ”快捷键。

太棒了,它有效:)

一个问题是我无法取消使用此方法进行的构建。我怀疑这是由于我在调用.build()时使用了NullProgressMonitor类。如果我了解了一种在此处添加适当的进度监视器的方法(该方法可让您取消正在进行的构建),那么我将更新此答案...

相关问题