Xtext: Создайте мастер проекта для DSL без src, src-gen и т.д.

#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(); } абсолютно решило мою проблему. Спасибо!