Модификация рабочего процесса Mwe2, сгенерированного Xtext программно - PullRequest
0 голосов
/ 09 марта 2019

Я запускаю рабочий процесс Mwe2 программно, и мне нужно добавить referencedResource для Terminals.xtext в файл GenerateYourDsl.mwe2, чтобы успешно запустить этот рабочий процесс. Упомянутый файл GenerateYourDsl.mwe2 генерируется Xtext при создании нового проекта - я не изменял его. Можно ли каким-то образом извлечь объект из этого рабочего процесса, получить к нему доступ в Java и добавить этот один атрибут к атрибуту языка атрибута компонента рабочего процесса?

Вот рабочий процесс:

Workflow {

    component = XtextGenerator {
        configuration = {
            project = StandardProjectConfig {
                baseName = "org.example.yourdsl"
                rootPath = rootPath
                eclipsePlugin = {
                    enabled = true
                }
                createEclipseMetaData = true
            }
            code = {
                encoding = "UTF-8"
                lineDelimiter = "\n"
                fileHeader = "/*\n * generated by Xtext \${version}\n */"
            }
        }
        language = StandardLanguage {
            name = "org.example.yourdsl.YourDsl"
            fileExtensions = "yourdsl"
            //following line needs to be added - in original generated workflow it is not
           referencedResource = "platform:/resource/org.eclipse.xtext/org/eclipse/xtext/common/Terminals.xtext"

            serializer = {
                generateStub = false
            }
            validator = {
                // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
                // Generates checks for @Deprecated grammar annotations, an IssueProvider and a corresponding PropertyPage
                generateDeprecationValidation = true
            }
        }
    }
}

Я генерирую проекты программно (используя CliProjectsCreator и WizardConfiguration) и мне нужно запустить рабочий процесс при создании проектов, чтобы сгенерировать файлы src, src-gen и т. Д. Но так как я пытаюсь запустить это программно (не в Eclipse) и терминалы используются в моей грамматике, я получаю эту ошибку:

XtextLinkingDiagnostic: null:1 Couldn't resolve reference to Grammar 'org.eclipse.xtext.common.Terminals'.
TransformationDiagnostic: null:36 Cannot create datatype WS. If this is supposed to return EString, make sure you have imported 'http://www.eclipse.org/emf/2002/Ecore' (ErrorCode: NoSuchTypeAvailable)
TransformationDiagnostic: null:39 Cannot create datatype NAME_TERMINAL. If this is supposed to return EString, make sure you have imported 'http://www.eclipse.org/emf/2002/Ecore' (ErrorCode: NoSuchTypeAvailable)
TransformationDiagnostic: null:42 Cannot create datatype VALUE_TERMINAL. If this is supposed to return EString, make sure you have imported 'http://www.eclipse.org/emf/2002/Ecore' (ErrorCode: NoSuchTypeAvailable)

1 Ответ

0 голосов
/ 11 марта 2019

не должно быть необходимости явно добавлять грамматику терминалов. Он должен быть найден в classpath через org.eclipse.xtext.resource.ClassloaderClasspathUriResolver.resolve(Object, URI), если рабочий процесс вызывается с правильным classpath. посмотрите, что создает мастер при выборе maven: вызов плагина maven exec, вызывающий main Mwe2Launcher с правильным classpath

...