如何安装包含字符串插值的Kotlin代码的maven原型?

问题描述 投票:0回答:1

我正在尝试安装我从Kotlin项目创建的maven原型。每当我尝试安装原型时,都会收到此错误:

Archetype IT 'basic' failed: org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error merging velocity templates: Encountered "()}\"\n 

触发错误的代码行是

return "redirect:${getRequestMapping()}"

有什么办法可以解决这个问题吗?我经常使用字符串插值,我不想用连接字符串替换它们

maven kotlin jvm velocity maven-archetype
1个回答
2
投票

美元符号'$'对Apache Velocity有意义,Apache Velocity是原型使用的引擎。 Velocity看到'$',认为它应该用它做一些事情,但语法是错误的(对于Velocity)而且它失败了。

这里的解决方法是逃避美元符号,因此Velocity忽略它,如documentation所述。

这样的东西,显示美元符号,还有其他可能需要根据用例进行转义:

## File will be filtered by Velocity - it is a Velocity template.
## Establish escape sequences for Velocity special chars.
#set( $symbol_pound = '#' )    
#set( $symbol_dollar = '$' )   
#set( $symbol_escape = '\' )

## Use the variable anywhere the interpolation is used
return "redirect:${symbol_dollar}{getRequestMapping()}"

Velocity文档使用“D”作为变量名称显示了相同的技术。我喜欢可搜索和自我记录的较长名称。

© www.soinside.com 2019 - 2024. All rights reserved.