XTEND/JAVA автоматическое создание проекта затмения

У меня есть проект XText в Eclipse, в котором реализован мой собственный файл грамматики. Используя функцию doGenerate, я создаю несколько файлов .java. Пока все работает как шарм.

Моя проблема в том, что каждый раз, когда я генерирую свои файлы, мне нужно сделать следующее:

  1. Скопируйте сгенерированные файлы в каталог проектов Eclipse.
  2. Создайте новый Java-проект в Eclipse.
  3. Импортируйте сгенерированные файлы в проект

Я хотел бы, чтобы некоторые или все эти шаги выполнялись автоматически при каждом вызове функции doGenerate, есть ли способ сделать это с помощью кода xtend/java? Я должен упомянуть, что моя грамматика требует, чтобы пользователь указал каталог проекта + имя, чтобы информация была доступна во время выполнения из функции doGenerate.

Желательно, чтобы код мог определять, существует ли уже проект с таким же именем, и обновлять его содержимое в открытом экземпляре Eclipse во время выполнения, если это возможно.

В качестве альтернативы, если это невозможно сделать с помощью xtend/java, можно ли это сделать с помощью плагина?


person Glugstar    schedule 26.04.2015    source источник
comment
Создание проектов Eclipse должно выполняться в плагине. По этому поводу уже есть несколько вопросов, таких как этот   -  person greg-449    schedule 26.04.2015


Ответы (1)


Создание новых проектов должно выполняться через API ресурсов eclipse. Если у вас все в порядке, имея эту зависимость в вашем генераторе кода, вы можете просто добавить зависимость к org.eclipse.core.resources и сделать что-то вроде

ResourcesPlugin.getWorkspace().getRoot().getProject("myProject").create(null)

Если вам не нужна эта зависимость, поскольку вы запускаете свой генератор кода из других сред (например, Maven), вам необходимо абстрагировать создание проекта в свой собственный класс, внедрить его и иметь отдельные реализации для Eclipse и не-Eclipse.

API-интерфейс генератора кода Xtext (IFileSystemAccess) будет использовать API-интерфейс ресурсов Eclipse под капотом, чтобы убедиться, что все уведомления и т. д. работают должным образом, и вам не нужно обновлять вручную. Так что здесь нет необходимости в различных реализациях, так как Xtext позаботится об этом.

person Sven Efftinge    schedule 26.04.2015
comment
Да, ваше решение именно то, что я искал. Проблема в том, что по какой-то причине я не могу заставить работать import org.eclipse, что странно, и я не могу понять, что я делаю неправильно. Я полагаю, мне нужен специальный плагин для этого, но я понятия не имею, какой именно. - person Glugstar; 29.04.2015
comment
Я хотел бы попросить дополнительную информацию по той же проблеме. IFileSystemAccess отлично работает, когда нужно оставаться в том же проекте, где находятся генераторы кода. Я также могу создавать простые папки в своей файловой системе (в папке текущей рабочей области) для сгенерированных файлов. Но они не распознаются как новые проекты в моем рабочем пространстве Eclipse. Действительно ли среда Xtend способна создавать исполняемые проекты? Я считаю, что для достижения этого мне понадобится поддержка процесса сборки, такого как Maven, верно? Также для интеграции библиотек или зависимостей проекта. - person DanglingElse; 20.07.2015