使用 USCavalry 转换器将 Velocity 模板转换为 FreeMarker
Posted
技术标签:
【中文标题】使用 USCavalry 转换器将 Velocity 模板转换为 FreeMarker【英文标题】:Converting Velocity template into FreeMarker using USCavalry converter 【发布时间】:2017-09-29 23:53:58 【问题描述】:我有大量的 Velocity 模板想要转换为 FreeMarker。
我发现了一个名为 USCavalry 的转换器工具,声称可以完成这项工作。
我在 IntelliJ 中将其设置为 Maven 项目,并将 Velocity 和 Freemarker 依赖项添加到我的 pom.xml。
该工具运行良好,但我对得到的输出不满意。它似乎是 AST 的标记化输出。正确的 FreeMarker 符号不会被替换。
还有其他人遇到过这个问题吗?为了获得有意义的 FreeMarker 模板作为输出,您做了哪些更改?
我将尝试修改源以输出 Velocity RuntimeServices.parse()
以外的其他内容,但我认为如果其他人已经解决了这个问题可能会有所帮助。
【问题讨论】:
【参考方案1】:USCavarlry 是一个非常简单的工具,而且也非常过时(链接的网页是一个 10 年前的快照,也许那时它已经过时了)。对于非常基本的事情,它似乎可以工作(至少对我来说,#if($x == 1)$y#end
被翻译成<#if x == 1>$y</#if>
)。即使在理论上也不可能进行正确的自动翻译,而且即使做到一半体面也将非常棘手(就像您必须考虑语义差异,例如在 if
条件中被视为逻辑正确的内容,必须识别广泛使用的调用Velocity 工具并将它们翻译成?xxx
表达式等)。据我所知,不存在这样的工具。因此,这主要是一项手动任务,需要手工制作正则表达式替换等等……或者您必须修改 USCavalry 源代码,以较快者为准。
【讨论】:
不,它甚至没有为我做那些基本的事情。但我很欣赏你的回答。知道这是一个手动过程是值得的。我已经开始手动操作了,但我认为可以使用工具来简化操作。感谢您的宝贵时间!以上是关于使用 USCavalry 转换器将 Velocity 模板转换为 FreeMarker的主要内容,如果未能解决你的问题,请参考以下文章