我想从已安装的插件中运行Acceleo项目,
即。我编写了一个使用Acceleo的插件,我想让它从工作区中的项目运行一个Acceleo模板。
目前,我有一个Acceleo项目,我以编程方式从我的Eclipse插件运行:
onTaskRemoved()
目前模板很简单:
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();
}
这完全可以生成。
问题是我需要部署插件,但我仍然需要最终用户才能修改模板。最终目标是将Acceleo项目放在最终用户的工作区中,让我的插件在运行时调用它,但无论我如何设置它,我都必须在我的插件功能中包含Acceleo项目。
我尝试的事情:
我正在跑步:
答案 0 :(得分:0)
您尝试实现的目标可能不正确。 Acceleo将模板编译为Java代码并从中创建可执行类。 如果您希望最终用户修改模板,那么他们将需要在之后编译代码,即他们需要构建基础结构。
我建议您参数化SQL查询并编译模板。您可以创建一个实用Java类来公开函数&#34; getSQL ...()&#34;并从您的模板中调用它。 此实用程序类可以根据需要从.properties或其他源读取SQL。
然后编译并发布二进制加速项目,并教导用户在运行时需要配置的内容。
答案 1 :(得分:0)
我这样做:&#34;从生成的结构中获取参数数据并将其视为输入数据&#34;。换句话说,您可以通过模型传递数据:
该模型是您的输入,因此如果您想要一个已编译和可配置的Acceleo插件,您应该拥有一个&#34;配置元素&#34;在您的入口模型上(如果您使用的是UML,它可以是一个&#34;配置类&#34;),在这种情况下,您将能够进行&#34; blackbox m2t转换&#34;还有一些信息(通过你的入口模型),你可以从中做出决定。您可以从之前的m2m转换中添加这些元素(使用默认值)。如果你知道一点点&#34; eclipse rcp&#34;也许你可以创建这个配置元素并以编程方式将其添加到入口模型(作为文本),然后运行你的#34;论证转换&#34;或者你可以直接要求用户手动完成任务。也许这个解决方案无法解决您的所有问题,但基于此,您至少可以为最终用户提供各种转换选项。
写完这个答案之后,我觉得这很有趣,也许比我的建议更好:Acceleo M2T - Write timestamp into a generated file