我有大量 Velocity 模板要转换为 FreeMarker。
我找到了一个名为 USCavalry 的转换器工具声称可以完成这项工作。
我在 IntelliJ 中将其设置为 Maven 项目,并将 Velocity 和 Freemarker 依赖项添加到我的 pom.xml 中。
该工具运行良好,但我对得到的输出不满意。它似乎是 AST 的标记化输出。不替换正确的 FreeMarker 符号。
有没有其他人遇到过这个问题?您更改了什么以获得有意义的 FreeMarker 模板作为输出?
我将尝试修改源以输出 Velocity RuntimeServices.parse()
的成果以外的内容,但我认为如果其他人已经解决了这个问题,这可能会有所帮助。
最佳答案
USCavarlry 是一个非常简单的工具,也非常过时(链接的网页是 10 年前的快照,也许它在那时就已经过时了)。对于非常基本的事情,它似乎有效(比如 #if($x == 1)$y#end
被翻译成 <#if x == 1>${y}</#if>
,至少对我而言)。正确的自动翻译即使在理论上也是不可能的,即使做得一半体面也会非常棘手(就像你必须考虑语义差异,比如在 if
条件下什么才算是逻辑真,必须认识到广泛使用的调用速度工具并将它们转换为 ?xxx
表达式等)。据我所知,不存在这样的工具。因此,这主要是一项手动任务,使用手工制作的正则表达式替换和所有...或者您必须修改 USCavalry 源代码,以速度更快者为准。
关于java - 使用 USCavalry 转换器将 Velocity 模板转换为 FreeMarker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43738202/