首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态Acceleo项目插件

动态Acceleo项目插件
EN

Stack Overflow用户
提问于 2015-07-21 03:29:38
回答 2查看 327关注 0票数 0

我想用安装好的插件运行Acceleo项目,

也就是说,我已经编写了一个使用Acceleo的插件,我希望它能够从工作区中的项目中运行Acceleo模板。

目前,我有一个Acceleo项目,我是通过编程方式从Eclipse插件运行的:

代码语言:javascript
复制
try {
final File outputDir = new File("C:/outputDir/");
List<String> arguments = new ArrayList<String>();
/*fc is an instance of a EMF Compare Comparison object
 * the nsURI for it is http://www.eclipse.org/emf/compare
 */
Generate generator = new Generate(fc, outputDir, arguments);                                 
            generator.doGenerate(new BasicMonitor());
} catch (IOException e) {
e.printStackTrace();
}

目前,模板很简单:

代码语言:javascript
复制
[comment encoding = UTF-8 /]
[module generate('http://www.eclipse.org/emf/compare')]
[template public generateElement(comparison : Comparison)]
[comment @main/]
[file ('update.sql', false, 'UTF-8')]
/*SQL UPDATE SCRIPT TEST*/
[comparison.getDifferences().toString() /]
[/file]
[/template]

这就完美地产生了。

问题是,我需要部署插件,但我仍然需要最终用户能够修改模板。最终目标是让Acceleo项目在最终用户的工作区中,让我的插件在运行时调用它,但是无论我如何设置它,我都必须将Acceleo项目包含在我的插件功能中。

我尝试过的事情:

  • 从最终用户工作区中的项目重写Acceleo模块
  • 使用java类加载器的各种尝试(我觉得这是一种方法,但我似乎无法得到一个有用的示例)

我在跑步:

  • 月食露娜SR2 (4.4.2)
  • Windows 7 Pro -64位SP1
  • Acceleo3.5.1.201409021433
  • JRE 1.8.0_45
EN

回答 2

Stack Overflow用户

发布于 2016-04-29 13:58:03

你想要达到的目标可能被错误地定义。Acceleo将模板编译成Java代码,并从它们创建可执行类。如果您希望最终用户修改模板,那么他们需要编译代码,也就是说,他们需要构建基础结构。

我建议您将SQL查询参数化并编译模板。您可以创建一个实用程序Java类,公开一个函数“getSQL.()”,并从模板中调用它。此实用工具类可以从.properties或其他源读取SQL。

然后编译并发布二进制acceleo项目,并教用户在运行时需要配置什么。

票数 0
EN

Stack Overflow用户

发布于 2017-01-17 03:20:59

我是这样做的:“从生成的结构中获取参数数据,并将其作为输入数据处理”。换句话说,您可以通过模型传递数据:

模型是您的输入,所以如果您想要有一个已编译和可配置的Acceleo插件,您可能应该在您的入口模型上有一个“配置元素”(如果您正在使用UML,它可以是一个“配置类”),在这种情况下,您将能够拥有一个“黑匣子m2t转换”,以及一些信息(通过您的入口模型),您可以从中做出决定。您可以从以前的m2m转换中添加这些元素(默认值)。如果您知道一些"eclipse“,也许您可以创建这个配置元素,并以编程方式将其添加到您的入口模型(作为文本),然后运行您的”有争议的转换“,或者您只需要让用户手动完成任务。也许这个解决方案不能解决您所有的问题,但是在此基础上,您至少可以为最终用户提供各种转换选项。

写完这个答案后,我觉得这个很有趣,也许比我的建议更好:Acceleo M2T - Write timestamp into a generated file

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31529853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档