Xtext:为没有 src、src-gen 等的 DSL 创建项目向导

Xtext: Create a project wizard for the DSL without src, src-gen etc

我 运行 查看了一些有关为我的 dsl 语言创建新项目向导的信息,并通过添加

成功创建了这样的向导
    fragment = ui.projectWizard.SimpleProjectWizardFragment2 {
        generate = true
    }

到我的工作流程。

但是,当使用该向导时,它还会创建不必要的文件和文件夹,例如 build.propertiesMETA-INFsrcsrc-genJRE System Library。 基本上我只想要一个与我的 DSL 关联的 空项目

我通过调用

成功删除了 META-INFbuild.properties
try {
    project.getFile("build.properties").delete(true, null);
    project.getFolder("META-INF").delete(true, null);
    } catch (CoreException e) {}    

从我自定义 DSLProjectCreator2enhanceProject(..) 的末尾开始(扩展 DSLProjectCreator)。

但是,如果我使用这种方式删除 srcsrc-gen,我会收到一个错误标记,指出缺少 srcsrc-gen(但是这赢了'解决删除 JRE System Library).

我该如何解决这个问题?

啊你启用向导的方式有点奇怪

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吗?绑定了哪个Project Factory?

生成的MyDslProjectCreator长什么样子? 它使用 JavaProjectFactory 还是 PluginProjectFactory