使用 Xtext 自定义新项目向导
Custom new project wizard with Xtext
我使用 Xtext (Eclipse: Oxygen.2 Release (4.7.2), Xtext: 2.12.0.v20170519-1412
)。我从标准示例 org.xtext.example.mydsl
开始。现在我想在 Eclipse 中为我的 DSL 创建一个向导(比如文件 → 新建 → 项目...)。我该怎么做呢?我通过谷歌搜索发现我需要将此部分添加到我的 MWE2 工作流程中:
newProjectWizardForEclipse = {
generate = true
}
我这样做了,而且我还得到了包含源文件 MyDslProjectInfo.java
、MyDslWizardNewProjectCreationPage.java
和 MyDslNewProjectWizardInitialContents.xtend
的生成包 org.xtext.example.mydsl.ui.wizard
。但是,如果我为 MyDsl 启动新的 Eclipse 运行时实例,我自己的向导没有选项(但其他事情按预期工作,即我可以手动创建一个新的 *.mydsl
文件并且它根据我的语法正确处理等等)
我做错了什么或者我误解了什么?这是我完整的 .mwe2
文件。
module org.xtext.example.mydsl.GenerateMyDsl
import org.eclipse.xtext.xtext.generator.*
import org.eclipse.xtext.xtext.generator.model.project.*
var rootPath = ".."
Workflow {
component = XtextGenerator {
configuration = {
project = StandardProjectConfig {
baseName = "org.xtext.example.mydsl"
rootPath = rootPath
runtimeTest = {
enabled = true
}
eclipsePlugin = {
enabled = true
}
eclipsePluginTest = {
enabled = true
}
createEclipseMetaData = true
}
code = {
encoding = "windows-1252"
lineDelimiter = "\r\n"
fileHeader = "/*\n * generated by Xtext ${version}\n */"
}
}
language = StandardLanguage {
name = "org.xtext.example.mydsl.MyDsl"
fileExtensions = "mydsl"
serializer = {
generateStub = false
}
validator = {
// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
}
// ---> I added this section, everyting else is standard example
newProjectWizardForEclipse = {
generate = true
}
}
}
}
可能是xtext无法自动合并plugin.xml
。然后会生成一个 plugin.xml_gen
,您必须手动将其合并到 plugin.xml
我使用 Xtext (Eclipse: Oxygen.2 Release (4.7.2), Xtext: 2.12.0.v20170519-1412
)。我从标准示例 org.xtext.example.mydsl
开始。现在我想在 Eclipse 中为我的 DSL 创建一个向导(比如文件 → 新建 → 项目...)。我该怎么做呢?我通过谷歌搜索发现我需要将此部分添加到我的 MWE2 工作流程中:
newProjectWizardForEclipse = {
generate = true
}
我这样做了,而且我还得到了包含源文件 MyDslProjectInfo.java
、MyDslWizardNewProjectCreationPage.java
和 MyDslNewProjectWizardInitialContents.xtend
的生成包 org.xtext.example.mydsl.ui.wizard
。但是,如果我为 MyDsl 启动新的 Eclipse 运行时实例,我自己的向导没有选项(但其他事情按预期工作,即我可以手动创建一个新的 *.mydsl
文件并且它根据我的语法正确处理等等)
我做错了什么或者我误解了什么?这是我完整的 .mwe2
文件。
module org.xtext.example.mydsl.GenerateMyDsl
import org.eclipse.xtext.xtext.generator.*
import org.eclipse.xtext.xtext.generator.model.project.*
var rootPath = ".."
Workflow {
component = XtextGenerator {
configuration = {
project = StandardProjectConfig {
baseName = "org.xtext.example.mydsl"
rootPath = rootPath
runtimeTest = {
enabled = true
}
eclipsePlugin = {
enabled = true
}
eclipsePluginTest = {
enabled = true
}
createEclipseMetaData = true
}
code = {
encoding = "windows-1252"
lineDelimiter = "\r\n"
fileHeader = "/*\n * generated by Xtext ${version}\n */"
}
}
language = StandardLanguage {
name = "org.xtext.example.mydsl.MyDsl"
fileExtensions = "mydsl"
serializer = {
generateStub = false
}
validator = {
// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
}
// ---> I added this section, everyting else is standard example
newProjectWizardForEclipse = {
generate = true
}
}
}
}
可能是xtext无法自动合并plugin.xml
。然后会生成一个 plugin.xml_gen
,您必须手动将其合并到 plugin.xml