2011-12-12 41 views
1

我正在嘗試爲android創建一個獨立的ant構建文件。我們正在使用加速器來生成代碼。acceleo編譯器,5:元模型無法解析

以下是我在build.xml中採取的步驟。

  1. 編譯汽車發電機
  2. 生成EMTL文件
  3. 眼下生成從EMTL文件

的代碼,我可以運行步驟1中,它工作正常。然後我運行第2步,它失敗,出現以下錯誤(第2步錯誤)。然後我可以運行第3步,它工作正常。然後我檢查我的所有文件和生成的代碼,一切都很好。但是,步驟2中的那些錯誤確實困擾着我,我需要讓他們解決。

任何幫助將不勝感激,如果你需要更多的信息,請讓我知道。

下面發佈是步驟2在build.xml步驟和錯誤


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) 

回答

0

[module generateDataAccessObject(...)]中刪除多餘的東西實際上解決了問題。如果我只包括http://www.eclipse.org/emf/2002/Ecore and http://www.eclipse.org/acceleo/mtl/3.0那麼它的工作原理。

1

Acceleo表明元模型無法解析。你的發電機使用什麼軟件包?如果您僅使用http://www.eclipse.org/EMF/2002/Ecore,則可能無需註冊元模型即可進行編譯,因爲「Ecore」是特定用例。否則,您應該編寫您的元模型的包的類而不是「org.eclipse.emf.ecore.EcorePackage」。

+0

我相信這是一種競爭條件。我拿出'org.eclipse.emf.ecore.EcorePackage'。我怎樣才能讓'generateEMTL'任務按特定順序編譯?這是問題,但我無法弄清楚如何讓acceleoCompiler以特定順序編譯。 – prolink007

+0

我明白了。我在'module'行有額外的東西,不需要在那裏。 – prolink007

相關問題