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