我需要开发一个独立的Acceleo发生器,但我不知道热门开始.我在Acceleo项目中完成了我的发电机.Acceleo项目包含generate.mtl文件,Generate.java文件和Activator.java文件.
我该怎么办?
首先,我对 Eclipse 的建模功能很陌生,所以这个问题可能是微不足道的,但我已经搜索了几天但没有找到答案。
我已经使用 ecore 建模项目创建了一个 ecore 元模型文件。URI 是这样的:/com.auth.dotnetPSM.PSMmodel/model/PSMMetamodel.ecore
我还生成了(通过 ATL 转换)一个 xmi 模型文件。第一个元素是这样的:
<?xml version="1.0" encoding="ISO-8859-1"?>
<RESTfulServicePSM
xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns="/com.auth.dotnetPSM.PSMmodel/model/PSMMetamodel.ecore"
name="WSAT">
Run Code Online (Sandbox Code Playgroud)
在 ATL 项目中,一切都按预期进行。
现在我需要使用 Acceleo 创建 M2T 转换。因此,对于初学者来说,我创建了两个模块,一个是 main :
[comment encoding = UTF-8 /]
[module PsmToCode('/com.auth.dotnetPSM.PSMmodel/model/PSMMetamodel.ecore')]
[import org::eclipse::acceleo::psm2code::files::ResourceModelClasses/]
[template public PsmToCode(aRESTfulServicePSM : RESTfulServicePSM)]
[comment @main/]
[for ( aCSharpResourceModel : CSharpResourceModel | aRESTfulServicePSM.hasCSharpRModel)]
[aCSharpResourceModel.generateResourceModelClasses()/]
[/for]
[/template]
Run Code Online (Sandbox Code Playgroud)
和另一个:
[comment encoding = UTF-8 /]
[module ResourceModelClasses('/com.auth.dotnetPSM.PSMmodel/model/PSMMetamodel.ecore')]
[template public generateResourceModelClasses(aCSharpResourceModel : CSharpResourceModel)]
[file (aCSharpResourceModel.parentName.toUpperFirst().concat('.cs'), false, 'UTF-8')]
[/file]
[/template]
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到一个Package …
我试图在Eclipse插件中弹出一个对话框(即一个FileDialog),实际上在一个Acceleo转换之前,我正在运行相关的UI Launcher项目(http://lowcoupling.com/post/51877317162/the-acceleo- ui-launcher-project)
我试图在相关的doGenerate方法中这样做...
public void doGenerate(IProgressMonitor monitor) throws IOException {
Display display = Display.getCurrent();
System.out.println(display);
//....
Run Code Online (Sandbox Code Playgroud)
但我得到的显示是空的我应该怎么做?
我必须将 java 函数包装在 Acceleo 文件中,有人可以帮助我吗?
谢谢
我有一个基于自定义元模型的DSL,而后者又基于EMF/Ecore.我想弄清楚选择哪种解决方案,我无法在任何地方找到任何体面的比较.
有没有人有任何理由为什么我应该选择一个而不是另一个?
到目前为止我所知道的是Acceleo使用OMG标准化语言,但它似乎比Xpand更难使用.
我正在尝试从现有项目创建一个Acceleo插件,并始终返回此错误消息:
'Export Plug-ins' has encountered a problem.
/media/Data/users/lads/Trabalho/Eclipse/Workspace.Acceleo/.metadata/.plugins/org.eclipse.pde.core/temp/org.eclipse.pde.container.feature/assemble.org.eclipse.pde.container.feature.linux.gtk.x86.xml:88: The following error occurred while executing this line:
/media/Data/users/lads/Trabalho/Eclipse/Workspace.Acceleo/.metadata/.plugins/org.eclipse.pde.core/temp/org.eclipse.pde.container.feature/assemble.org.eclipse.pde.container.feature.linux.gtk.x86.xml:103: The following error occurred while executing this line:
/media/Data/users/lads/Trabalho/Eclipse/Workspace.Acceleo/.metadata/.plugins/org.eclipse.pde.core/temp/org.eclipse.pde.container.feature/assemble.org.eclipse.pde.container.feature.linux.gtk.x86.xml:26: The following error occurred while executing this line:
/media/Data/users/lads/Trabalho/Eclipse/Workspace.Acceleo/org.eclipse.acceleo.module.sample/build.xml:315: The following error occurred while executing this line:
/media/Data/users/lads/Trabalho/Eclipse/Workspace.Acceleo/org.eclipse.acceleo.module.sample/build.xml:422: Problem: failed to create task or type apitooling.apigeneration
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
Run Code Online (Sandbox Code Playgroud)
build.xml …
我正在使用Acceleo 3.0从EMF模型生成一些HTML代码.我有以下代码:
<div class="ui-grid" style="text-align:center">
[for ( icon : Icon | self.Icons )]
<div class="column-a"><button data-icon="[iconName/]"></button></div>
<div class="column-b"><button data-icon="[iconName/]"></button></div>
<div class="column-c"><button data-icon="[iconName/]"></button></div>
[/for]
</div>
Run Code Online (Sandbox Code Playgroud)
现在,我想做的是使它完全参数化,逐渐在for循环中应用类名,直到我在模型中达到MaxColumns参数,然后从0开始.即,如果我有MaxColumns = 3我想要结果如下:
<div class="ui-grid" style="text-align:center">
<div class="column-a"><button data-icon="icon-1"></button></div>
<div class="column-b"><button data-icon="icon-2"></button></div>
<div class="column-c"><button data-icon="icon-3"></button></div>
<div class="column-a"><button data-icon="icon-4"></button></div>
<div class="column-b"><button data-icon="icon-5"></button></div>
<div class="column-c"><button data-icon="icon-6"></button></div>
<div class="column-a"><button data-icon="icon-7"></button></div>
<div class="column-b"><button data-icon="icon-8"></button></div>
<div class="column-c"><button data-icon="icon-9"></button></div>
...
</div>
Run Code Online (Sandbox Code Playgroud)
提前致谢.