#dsl #wizard #xtext
#dsl #мастер #xtext
Вопрос:
Я наткнулся на некоторую информацию о создании нового мастера проекта для моего языка dsl, и мне удалось создать такой мастер, добавив
fragment = ui.projectWizard.SimpleProjectWizardFragment2 {
generate = true
}
для моего рабочего процесса.
Однако при использовании мастера он также создает ненужные файлы и папки, такие как build.properties
, META-INF
, src
, src-gen
JRE System Library
, . В принципе, я просто хочу, чтобы с моим DSL был связан «пустой проект».
Мне удалось удалить META-INF
и build.properties
, вызвав
try {
project.getFile("build.properties").delete(true, null);
project.getFolder("META-INF").delete(true, null);
} catch (CoreException e) {}
с конца enhanceProject(..)
в моем настроенном DSLProjectCreator2
(который расширяется DSLProjectCreator
).
Но если я использую этот способ для удаления, src
и src-gen
я получаю маркер ошибки, в котором говорится, что src
и src-gen
отсутствуют (однако это не решит проблему удаления JRE System Library
).
Как я могу это решить?
Комментарии:
1. Какую версию xtext вы используете
Ответ №1:
ах, ваш способ включения мастера немного странный
newProjectWizardForEclipse = {
pluginProject = false
generate = true
}
как насчет того, чтобы не создавать папки вместо их удаления.
class MyDslNewProjectWizardInitialContents {
@Inject
FileExtensionProvider fileExtensionProvider
def generateInitialContents(IFileSystemAccess2 fsa) {
fsa.generateFile(
"Model." fileExtensionProvider.primaryFileExtension,
'''
/*
* This is an example model
*/
Hello Xtext!
'''
)
}
}
public class MyDslProjectCreatorCustom extends MyDslProjectCreator {
@Override
protected List<String> getAllFolders() {
return Collections.emptyList();
}
}
я не знаю, почему вы создаете проект Java. используете ли вы xbase? какая фабрика проектов привязана?
как выглядит сгенерированный MyDslProjectCreator? использует ли он JavaProjectFactory или PluginProjectFactory
Комментарии:
1. Использование
pluginProject = false
иprotected List<String> getAllFolders() { return Collections.emptyList(); }
абсолютно решило мою проблему. Спасибо!