[英]Create Eclipse shortcut to run particular target of an build file
我有不同的項目和幾個構建文件,其中包含不同的目標。
通常,如果我要運行目標,則可以使用導航到“ Ant”視圖,然后選擇構建文件,然后選擇要運行的目標。
除了每次都執行幾個步驟之外,沒有任何方法可以為特定目標分配鍵盤快捷鍵,以便我可以輕松地運行該目標。
可以在“ 窗口”>“首選項”>“常規”>“鍵”下找到鍵的主要首選項頁面(或更快:按Ctrl + 3 ,鍵入“鍵”,然后按Enter)。 請參閱如何在Eclipse中管理鍵盤快捷鍵以及為什么要撰寫文章以實現所需的內容。
注意:這是我最初放棄的“ 實用宏+ Beanshell腳本 ”技術。 我更喜歡第二答案中提到的其他技術。
我也一直在尋找一種針對特定目標的方法。 唯一可用的內置快捷方式是“重新構建最后一個目標”,如果您經常在目標之間進行交換,那么這並不是很有用。
盡管我還沒有具體的解決方案,但我正在努力。
我正在評估“實用宏”插件。 它具有為宏分配快捷鍵的功能。 它還具有將宏定義為beanshell腳本的功能。
因此,剩下的就是弄清楚哪種beanshell腳本能夠運行特定的make目標。
我試圖通過EASE腳本工具探索Eclipse API。
我將分享有關如何以編程方式(通過其javascript界面)成功運行make-target的步驟/說明:
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再次變得響應。
因此,它不是完美的,但我想它是我追求的方向上的增量進度...至於在構建過程中導致此凍結/停頓的原因,我不能肯定地說,但我懷疑實用宏插件已鎖定調試直到宏完成。
下次:
也許如果我有另一個時間窗口可以再次查看它,我將嘗試查看是否可以通過鍵盤快捷鍵觸發EASE-javascript腳本。 該頁面似乎暗示可能:
好的,我已經嘗試了“ Ease-script +鍵盤快捷鍵 ”技術,並且效果更好:
我在工作區/項目的底部創建了一個“ 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類。 如果我了解了在此處添加適當的進度監視器的方法(該方法可讓您取消正在進行的構建),那么我將更新此答案...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.