如何使用可跟踪消息

时间:2017-10-05 14:00:23

标签: velocity maven-site-plugin

有:

  • Velocity模板或宏
  • 某个对象

如何验证对象( #if )并失败(停止进一步处理),以便可以轻松追踪失败的地方(比如在Java中抛出异常)。

我正在寻找类似的东西:

#if ( ! $context.treasureMap.containsKey('gold'))
  #fail('no golden treasure here')
#end

背景

我正在写一个maven网站页面。速度上下文由maven注入并包含POM信息。我想测试有效pom中某些信息的存在。当信息不可用时,我想失败。

要求

  • 失败速度处理>网站生成失败>失败的maven build。
  • 错误消息应该导致失败的地方,因此应该修复网站
  • 最好没有配置(没有扩展名,只包含普通Velocity中包含的构造/工具)

试过

  • 严格参考模式
    不需要的配置,不希望每次都失败。
  • #evaluate('#end')又名语法错误
    (选择#end最能描述我的意图)基本上我想要的是什么。失败处理和maven构建但错误消息不会导致失败位置: ParseException: Encountered "#end" at line 1, column 1.

1 个答案:

答案 0 :(得分:0)

您需要进行产生异常的方法调用。请参阅explanation

  

在Velocity中唯一可能遇到麻烦的地方是调用一个在运行时抛出异常的方法。例如,这个VTL定义了一个String $ foo然后尝试调用它的substring()方法就会抛出一个IndexOutOfBoundsException:

 #set ($foo = "bar")

  #set ($bar = $foo.substring(0,10))
  

当抛出异常时,解析器将停止处理并将该异常抛出堆栈树,在堆栈树中可以捕获导致解析器执行的方法。此时,可以优雅地处理异常。