簡體   English   中英

創建Eclipse快捷方式以運行構建文件的特定目標

[英]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())

因此,我認為剩下的就是我(或其他有興趣的人)去:

  • 將此腳本從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再次變得響應。

因此,它不是完美的,但我想它是我追求的方向上的增量進度...至於在構建過程中導致此凍結/停頓的原因,我不能肯定地說,但我懷疑實用宏插件已鎖定調試直到宏完成。

下次:

也許如果我有另一個時間窗口可以再次查看它,我將嘗試查看是否可以通過鍵盤快捷鍵觸發EASE-javascript腳本。 該頁面似乎暗示可能:

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

好的,我已經嘗試了“ 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())

請注意在標題注釋中使用了“魔術關鍵字”,它指定了腳本所需的所需快捷鍵。

然后,您需要通過以下步驟指定要加載腳本的位置:

  • Windows >>首選項>>腳本>>腳本位置

我個人單擊了“ 添加工作區 ”按鈕,並指定了我的工作區/項目的基礎(這是我存放腳本的位置)。

我重新啟動了Eclipse,然后使用了指定的“ Alt + Shift + 2 ”快捷鍵。

太棒了,它有效:)

一個問題是我無法取消使用此方法進行的構建。 我懷疑這是由於我在調用.build()時使用了NullProgressMonitor類。 如果我了解了在此處添加適當的進度監視器的方法(該方法可讓您取消正在進行的構建),那么我將更新此答案...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM