java — динамическое значение проекта Eclipse в конфигурации запуска

Я имею дело с хранилищем модулей Java и C ++, которое настроено следующим образом:

Репо Структура

Repo/
- ModuleA/
- src/
- ...
- ModuleA.launch
- ...
- ModuleB/
- ... # same as above.
- ...

Меня беспокоит определение сценария запуска (IE: ModuleA.launch в приведенном выше); в частности, PROJECT_ATTR Значение этих скриптов. Если бы мы открыли эти сценарии запуска, они бы содержали следующую запись:

ModuleA.launch

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<!-- or <launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType> -->
...
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="ModuleA"/>
<!-- or <stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="ModuleA"/> -->
...
</launchConfiguration>

Выше есть проблема, что, если модуль не проверен как именно так ModuleA, скрипт запуска не найдет проект (который хрупок). Насколько я могу судить, это поле не может быть заполнено переменными (IE: value="${project_name}").

Есть ли какой-нибудь способ сказать сценарию запуска использовать содержащий проект для значения Project (или любой разумный обходной путь, который приводит к подобному опыту)? Версия Eclipse — Kepler SR2 (и не может быть изменена), если это актуально.

2

Решение

Изучение :

Глядя на код CDT, этот атрибут установлен только в одном месте. Это в пакете org.eclipse.cdt.launch.ui в классе CMainTab2 (для CDT версии более 7.3, в противном случае CMainTab), в строке 344, в функции performApply(),

Этот класс определяет вкладку «main» в окне пользовательского интерфейса, используемую для настройки конфигурации запуска (или конфигурации отладки). Как показано на рисунке ниже:
Главная вкладка

Функция performApply() вызывается каждый раз, когда вы обновляете эту вкладку (например, когда вы открываете или закрываете ее), и когда вы нажимаете кнопку «Применить» (в левом нижнем углу окна).

Эта функция просто устанавливает некоторый атрибут в конфигурации запуска. Одним из них является название проекта (ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME). Для этого атрибута установлено значение fProjText.getText(), которое является текстовым полем в окне, показанном ниже:

Поле проекта

Это текстовое поле заполняется автоматически при создании конфигурации запуска (или конфигурации отладки) с именем последнего созданного проекта.

Замечания: Я не смотрел на код JDT, но я думаю, что это то же самое


Решения

1) Ничего не меняйте, потому что это может быть намеренно так (даже если я не знаю почему). Замечания: Я думаю, что это значение может быть неправильным, только если вы измените его, поэтому я думаю, что это трудно записать в .launch скрипт.

2) Вы можете изменить код Eclipse, чтобы не использовать значение текстового поля, а что-то вроде "${project_name}", Замечания: Я не рекомендую это, потому что будет сложнее обновить ваш проект, чтобы следовать обновлениям затмения.

2 бис) Вместо того, чтобы переписывать код Eclipse, расширьте CMainTab2 класс для переопределения performApply() метод для установки атрибута "${project_name}",

3) Не изменяйте код, и каждый раз, когда вы создаете конфигурацию запуска (запуск или отладку), изменяйте значение текстового поля на $ {имя_проекта}. (Но это будет трудоемким повторять это каждый раз)

Замечания : Я не знаю, существует ли такая переменная, как project_name что вы можете вызвать в .launch script. Так что, возможно, все эти потенциальные решения не возможны

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]