我有不同的项目和几个包含不同目标的构建文件 通常,如果我想运行目标,我将使用导航到“Ant”视图,然后选择构建文件,然后选择要运行的目标。
不是每次都做几个步骤,有没有办法为特定目标分配键盘快捷键,以便我可以轻松地运行该目标。
答案 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())
所以我认为剩下的就是我(或其他有兴趣的人)去做的事情:
...很多相关的解决方法,因此,如果有人有任何更简单的选择,我很乐意听到。
更新:
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脚本。该页面似乎暗示可能:
答案 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())
请注意在标题注释中使用“魔术关键字”,它指定了所需的脚本快捷键。
然后,您需要转到以下位置来指定要加载脚本的位置:
我个人单击了“ 添加工作区”按钮,并指定了工作区/项目的基础(这是我存放脚本的位置)。
我重新启动Eclipse,然后使用我指定的“ Alt + Shift + 2 ”快捷键。
太棒了,它有效:)
一个问题是我无法取消使用此方法进行的构建。我怀疑这是由于我在调用.build()时使用了NullProgressMonitor类。如果我了解了一种在此处添加适当的进度监视器的方法(该方法可让您取消正在进行的构建),那么我将更新此答案...