是否可以從Ecore元模型生成Java代碼,而不依賴EMF?生成「乾淨的代碼」就好像它是一個來自UML模型的代。如何從Ecore元模型創建Java代碼而無需EMF jar依賴?
回答
最簡單的方法是在頂層節點的「模型特徵缺省值」部分設置GenModel選項「抑制EMF類型」...有相關選項的孔集。有關完整的詳細信息,請參閱EMF手冊(第二版)。
您也可以使用JET從ECore模型生成您自己的Java代碼。請參閱「Metamodeling with EMF: Generating concrete, reusable Java snippets」以獲取更詳細的說明。
並非所有東西都可以使用EMF模型編輯器刪除。必須在底層模板中刪除#eSet
,#eGet
等方法。通過設置「Operation Reflection」= false,可以刪除eInvoke
方法。 util包可以被刪除設置包級配置「Adapter Factory」= false。還有其他可以通過genmodel config進行管理的更改 - 有關更多詳細信息,請參閱EMF建模框架手冊的第12.3.1節。
注意,「禁止EMF類型」從EOperation
和EReference
getter和setter刪除EMF類型只而不是從宣佈伊娃或在您的getter使用(如果列表爲空)構造函數。這些必須在模板中進行更改 - Class.javajet具體。有關如何更換核心EMF模板的詳細信息,請參閱using-dynamic-templates-in-emf。
對於伊娃,使用Feature#getImportedType
,不Feature#getImportedInternalType
:
protected <%=genFeature.getImportedType(genClass)%> <%=genFeature.getSafeName()%>;
這一行跟在包含那就是isListType測試中的以下的註釋部分:
<%} else if (genFeature.isListType() || genFeature.isReferenceType()) {%>
<%if (genClass.isField(genFeature)) {%>
/**
* The cached value of the '{@link #<%=genFeature.getGetAccessor()%>() <em><%=genFeature.getFormattedName()%></em>}' <%=genFeature.getFeatureKind()%>.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
對於訪問,使用的東西如下圖取代EMF EList
impl與ArrayList
:
<%=genFeature.getSafeName()%> = new <%=genModel.getImportedName("java.util.ArrayList")%><<%=genFeature.getListItemType()%>>();
instead of:
<%=genFeature.getSafeName()%> = new <%=genClass.getListConstructor(genFeature)%>;
有人可能會認爲,如果您不得不將模板更改爲這種程度,那麼您不應該使用EMF :-) – wmorrison365
- 1. 如何在EMF ecore模型中創建LinkedHashMap?
- 2. 如何使用EMF API以編程方式從ecore創建Genmodel和模型代碼?
- 3. 用ecore元模型生成xtend2代碼
- 4. 如何從emf模型生成帶註釋的'java代碼'
- 5. 如何從EMF模型生成Java代碼
- 6. 如何創建jar依賴關係?
- 7. 從.jar文件中檢索ecore模型
- 8. 從EMF模型生成代碼
- 9. 導入外部JAR在Maven項目,而無需創建一個依賴
- 10. EMF模型ecore圖eclipse,如何做一個雙向關係
- 11. 如何使用Java代碼生成EMF模型
- 12. 是否可以在運行時從java代碼創建EMF包?
- 13. Android jar依賴
- 14. 如何在EMF Ecore中映射xs:any?
- 15. 如何將ecore(EMF)轉換爲xsd
- 16. Maven Shade插件創建無依賴關係的JAR並從其他位置加載依賴關係JAR
- 17. 創建具有依賴信息的jar
- 18. jar文件的創建 - 庫的依賴
- 19. Maven:爲依賴項創建多個jar
- 20. 如何從同一原型創建角度模型而無需綁定?
- 21. 創建具有依賴性和測試依賴性的jar
- 22. EMF從ECore中XMI在運行時
- 23. 如何在Rails中查詢數據而無需創建模型?
- 24. 帶EMF/ecore的嵌套類
- 25. 刪除EMF依賴關係
- 26. JAR的依賴關係
- 27. Java,jar依賴問題
- 28. Java Maven Jar依賴關係
- 29. 如何通過串行器創建模型實例,而無需從嵌套的串行器創建模型?
- 30. 我可以使用基於XML的模型的EMF/ECore嗎?
但是,「抑制EMF類型」不會刪除所有依賴關係。我會看看這本書,謝謝 – seeebown
它也可以服務於其他人:http://wiki.eclipse.org/EMF/Recipes#Recipe:_Generating_Pure_API_With_No_Visible_EMF_Dependencies – seeebown
並非所有東西都可以使用EMF模型編輯器刪除。必須在底層模板中刪除#eSet,#eGet等方法。 eInvoke方法可以通過設置「Operation Reflection」= false來刪除。 util包可以被刪除設置包級配置「Adapter Factory」= false。你是別人。目前正在制定如何使用列表,而不是EList :-( – wmorrison365