компилятор acceleo, 5: не удалось разрешить метамодель

Я пытаюсь создать автономный файл сборки ant для Android. Мы используем ускорение для генерации кода.

Вот шаги, которые я предпринимаю в файле build.xml.

  1. скомпилировать автогенератор
  2. Сгенерируйте файлы EMTL
  3. Сгенерируйте код из файлов EMTL

Прямо сейчас я могу запустить шаг 1, и он отлично работает. Затем я запускаю шаг 2, и он завершается со следующими ошибками (Ошибки шага 2). И тогда я могу запустить шаг 3, и он отлично работает. Затем я проверяю все свои файлы и сгенерированный код, и все выглядит нормально. Однако эти ошибки из шага 2 действительно беспокоят меня, и мне нужно их устранить.

Любая помощь будет принята с благодарностью, и если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Ниже приведены шаги в файле build.xml и ошибки для шага 2.


the build.xml information
<target name="compileAutogen" description="Compiles Autogen">
    <javac
        srcdir="${AUTOGEN_SRC}"
        destdir="${AUTOGEN_BIN}"
        classpath="${ECLIPSE_HOME}/plugins/org.eclipse.acceleo.engine_3.2.0.v20111027-0537.jar;${ECLIPSE_HOME}/plugins/org.eclipse.emf.common_2.7.0.v20110912-0920.jar;${ECLIPSE_HOME}/plugins/org.eclipse.emf.ecore_2.7.0.v20110912-0920.jar;${ECLIPSE_HOME}/plugins/org.eclipse.acceleo.model_3.2.0.v20111027-0537.jar"
        executable="${JAVA_JDK}/javac"
        fork="true"
        includeantruntime="false"
        failonerror="false"
    />
</target>

<target name="generateEMTL" description="Generates the EMTL files for Autogen">
    <acceleoCompiler sourceFolder="${AUTOGEN_SRC}"
         outputFolder="${AUTOGEN_BIN}"
         dependencies=""
         binaryResource="false"
         packagesToRegister="org.eclipse.emf.ecore.EcorePackage">
    </acceleoCompiler>
</target>

<target name="generateFrameworkCode" description="Generates the generated code for Framework">
    <java 
        classname="framework.generator.main.Main" 
        classpath="${AUTOGEN_BIN};${ECLIPSE_HOME}/plugins/org.eclipse.acceleo.engine_3.2.0.v20111027-0537.jar;${ECLIPSE_HOME}/plugins/org.eclipse.emf.ecore_2.7.0.v20110912-0920.jar;${ECLIPSE_HOME}/plugins/org.eclipse.emf.common_2.7.0.v20110912-0920.jar;${ECLIPSE_HOME}/plugins/org.eclipse.acceleo.common_3.2.0.v20111027-0537.jar;${ECLIPSE_HOME}/plugins/org.eclipse.acceleo.model_3.2.0.v20111027-0537.jar;${ECLIPSE_HOME}/plugins/org.eclipse.emf.ecore.xmi_2.7.0.v20110520-1406.jar;${ECLIPSE_HOME}/plugins/org.eclipse.ocl.ecore_3.1.1.v20110823-1646.jar;${ECLIPSE_HOME}/plugins/org.eclipse.ocl_3.1.0.v20110913-1213.jar;${ECLIPSE_HOME}/plugins/lpg.runtime.java_2.0.17.v201004271640.jar;${ECLIPSE_HOME}/plugins/org.eclipse.core.runtime.compatibility.registry_3.5.0.v20110505/runtime_registry_compatibility.jar;${ECLIPSE_HOME}/plugins/org.eclipse.core.runtime_3.7.0.v20110110.jar;${ECLIPSE_HOME}/plugins/org.eclipse.osgi_3.7.1.R37x_v20110808-1106.jar;${ECLIPSE_HOME}/plugins/org.eclipse.equinox.common_3.6.0.v20110523.jar;${ECLIPSE_HOME}/plugins/org.eclipse.core.jobs_3.5.100.v20110404.jar;${ECLIPSE_HOME}/plugins/org.eclipse.equinox.registry_3.5.101.R37x_v20110810-1611.jar;${ECLIPSE_HOME}/plugins/org.eclipse.equinox.preferences_3.4.1.R37x_v20110725.jar;${ECLIPSE_HOME}/plugins/org.eclipse.core.contenttype_3.4.100.v20110423-0524.jar;${ECLIPSE_HOME}/plugins/org.eclipse.equinox.app_1.3.100.v20110321.jar;${ECLIPSE_HOME}/plugins/com.google.collect_1.0.0.v201105210816.jar" 
        fork="true">
        <arg value="${MODEL}"/>
        <arg value="${TARGET}"/>
    </java>
</target>

<target 
    name="generateFramework" 
    description="Compiles Autogen, prepares the emtl files and runs the generator for Framework"
    depends="compileAutogen, generateEMTL, generateFrameworkCode"
/>

(Step 2 Errors)
generateEMTL:
[acceleoCompiler] generateDataAccessObject.mtl
[acceleoCompiler] 5:The metamodel couldn't be resolved
[acceleoCompiler] 5:The metamodel couldn't be resolved
[acceleoCompiler] 5:The metamodel couldn't be resolved
[acceleoCompiler] 
[acceleoCompiler] generatePerstNode.mtl
[acceleoCompiler] 5:The metamodel couldn't be resolved
[acceleoCompiler] 5:The metamodel couldn't be resolved
[acceleoCompiler] 
[acceleoCompiler] TreeWalk.mtl
[acceleoCompiler] 5:The metamodel couldn't be resolved
[acceleoCompiler] 5:The metamodel couldn't be resolved
[acceleoCompiler] 

BUILD FAILED
C:\Framework\build.xml:170: generateDataAccessObject.mtl
5:The metamodel couldn't be resolved
5:The metamodel couldn't be resolved
5:The metamodel couldn't be resolved

generatePerstNode.mtl
5:The metamodel couldn't be resolved
5:The metamodel couldn't be resolved

TreeWalk.mtl
5:The metamodel couldn't be resolved
5:The metamodel couldn't be resolved


    at org.eclipse.acceleo.parser.compiler.AcceleoCompiler.execute(AcceleoCompiler.java:121)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.apache.tools.ant.Main.runBuild(Main.java:809)
    at org.apache.tools.ant.Main.startAnt(Main.java:217)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

person prolink007    schedule 12.12.2011    source источник


Ответы (2)


Acceleo указывает, что метамодель не может быть разрешена. Какие пакеты использует ваш генератор? Если вы просто используете http://www.eclipse.org/EMF/2002/Ecore, возможно, вы сможете скомпилировать метамодель без регистрации, поскольку «Ecore» — это особый вариант использования. В противном случае вы должны написать классы пакетов вашей метамодели вместо «org.eclipse.emf.ecore.EcorePackage».

person sbegaudeau    schedule 19.12.2011
comment
Я считаю, что это состояние гонки. Я вынул org.eclipse.emf.ecore.EcorePackage. Как я могу сделать так, чтобы задача generateEMTL собирала вещи в определенном порядке? Это проблема, но я просто не могу понять, как заставить acceleoCompiler компилироваться в определенном порядке. - person prolink007; 19.12.2011
comment
Я понял. У меня были лишние вещи в строке module, которых там быть не должно. - person prolink007; 19.12.2011

Удаление лишнего материала из [module generateDataAccessObject(...)] фактически решило проблему. Если я включу только http://www.eclipse.org/emf/2002/Ecore and http://www.eclipse.org/acceleo/mtl/3.0, то это сработает.

person prolink007    schedule 19.12.2011