Создайте ярлык Eclipse для запуска определенного целевого файла сборки

#java #eclipse #keyboard-shortcuts

#java #eclipse #сочетания клавиш

Вопрос:

У меня есть разные проекты и несколько файлов сборки с разными целями в нем.
Обычно, если я хочу запустить цель, я использую для перехода к представлению ‘Ant’, а затем выбираю файл сборки, а затем выбирает цель для запуска.

Вместо того, чтобы каждый раз выполнять несколько шагов, есть ли какой-либо способ назначить сочетание клавиш для конкретной цели, чтобы я мог легко запускать эту цель.

Ответ №1:

Главную страницу настроек для ключей можно найти в разделе Window > Preferences > General > Keys (или быстрее: нажмите Ctrl 3, введите Keys и нажмите Enter). Смотрите, как управлять сочетаниями клавиш в Eclipse и почему вы должны статью, чтобы достичь того, чего вы хотите.

Ответ №2:

Хорошо, я попробовал метод «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«.

Потрясающе, это работает 🙂

Одна ошибка заключается в том, что я не могу отменить сборку, которая выполняется с помощью этого метода. Я подозреваю, что это связано с тем, что я использую этот класс NullProgressMonitor при вызове .build(). Если я узнаю о способе добавления сюда надлежащего монитора прогресса (который позволяет отменить текущую сборку), тогда я обновлю этот ответ…

Ответ №3:

ПРИМЕЧАНИЕ: Это мой первоначальный метод «Практически Макрос сценарий Beanshell«, от которого я отказался. Я предпочитаю другой метод, упомянутый в моем 2-м ответе.

Я искал способ сделать это и для конкретных целей make. Единственный доступный встроенный ярлык — это «Перестроенная последняя цель», что не так уж полезно, если вы часто переключаетесь между целями.

Пока у меня нет конкретного решения, я работаю над ним.

Я оцениваю подключаемый модуль «Практически макрос». В нем есть возможность назначить сочетание клавиш макросу. Он также имеет возможность определять макрос как сценарий beanshell.

Итак, все, что осталось, это выяснить, какой скрипт beanshell был бы способен запускать конкретную цель make.

Я попытался изучить Eclipse API с помощью инструмента EASE scripting.

Я поделюсь своими шагами / заметками о том, как я успешно запустил make-target программно (через их интерфейс 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 и добавьте его в качестве макроса с помощью плагина «Практически макрос»
  • Назначьте ему комбинацию клавиш

… довольно сложный способ добиться этого, поэтому, если у кого-нибудь есть более простые альтернативы, я готов их выслушать.

Обновить:

Черт возьми, мне удалось создать скрипт beanshell для «Практически макроса» в этой форме:

 //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 ide останавливается без какого-либо обновления. Только после завершения сборки панель консоли обновляется окончательным выводом сборки (одним нажатием), и Eclipse снова становится отзывчивым.

Так что это не идеально, но я полагаю, что это постепенный прогресс в том направлении, в котором я стремлюсь… Что касается того, что вызывает это замораживание / остановку во время сборки, я не могу сказать наверняка, но я подозреваю, что плагин Practically Macro блокирует Eclipse до завершения макроса.

В следующий раз:

Возможно, если бы у меня было другое окно времени, чтобы изучить это снова, я бы попытался посмотреть, смогу ли я запустить скрипт EASE-javascript с помощью сочетания клавиш. Эта страница, похоже, намекает на то, что это возможно:

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