添加作为 maven 遇到的警告数量 "placeholder"

Add amount of warnings encountered as a maven "placeholder"

例如,在 Maven 中,您可以使用 'placeholders',例如 ${maven.build.timestamp}。有没有办法让我得到一个占位符,比方说 ${warnings},其中包含构建项目时遇到的警告数量?

示例:

"[!] This Build is version ${project.version}, and was compiled on ${maven.build.timestamp} UTC." + System.lineSeparator() + "[!] ${warnings} occured while building this build, and there were ${errors} errors."

Maven 不对日志文件进行任何 post 处理 - it only uses SLF4J implementation of logging which has some configuration。这意味着 Maven 没有任何 属性 与显示特定类型日志消息计数的日志文件相关。这意味着您必须自己完成该部分,然后将其附加到 属性 以便您可以使用 属性 替换。这使得它成为一项相对耗时的任务,而且似乎回报很少。

争论为什么不值得

  1. 警告消息格式取决于各个插件 - 所以这意味着如果插件开发人员决定他们为单个警告放置多个警告日志语句,您无法决定它是否是一个或三个警告。如果他们出于某种原因决定将所有警告放在一个日志条目中,情况也是如此。
  2. 计算错误没有意义 - Maven 的约定 API 是在插件执行过程中遇到无法处理的错误时立即抛出异常,从而结束构建失败。
  3. 此问题的解决方案需要处理日志文件 - 这意味着您必须 重定向流并在这样做时限制功能。

好吧,反正我想要,怎么办?

您只需:

  1. 将 SLF4J 日志输出重定向到一个文件(在给定的 link 和 SLF4J javadoc 中有解释)
  2. 在 Maven 生命周期结束时,执行 post- 日志文件处理,计算具有特定日志记录级别(即 WARN)的消息,并将该数字保存到 属性 (即警告)
  3. 在 post 处理后写入输出消息,并进行 属性 替换(即 ${warnings})

考虑到所有这些,我认为仅仅显示警告数量并不值得付出努力。