Fail on WARNINGs

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Fail on WARNINGs

Brian Demers-3
I'd like to fail a build on any WARNINGs.  Some plugins can do this already
e.g. the compiler plugin with `maven.compiler.failOnWarning`. I'm looking
for a more general solution.

I tried to hack up an extension this morning to configure an extra log
listener, that seemed like a dead end, as you cannot modify the
SLF4J/MavenSimpleLogger (without messing with the Maven distribution).

My _quick and dirty_ solution was to create a shell script wrapper function:

```

# Tested on OS X (with a bunch of gnu utils installed)
function mvnwarn {

  tmp_file=$(mktemp $TMPDIR/$(uuidgen).txt)

  MAVEN_OPTS="-Djansi.force=true" mvn -Dstyle.color=always $@ | tee
"${tmp_file}"
  exit_code=${pipestatus[1]}
  if [ $exit_code -ne 0 ]; then
    return 1
  fi

  result=$(grep "WARN" "${tmp_file}")
  grep_exit_status=$?

  if [ $grep_exit_status -eq 0 ]; then
    echo "\n\u001b[1mWarnings Found:\u001b[0m"
    echo $result
    false
    return
  fi
}

```

Does anyone have any other suggestions?  Anything we can add to Maven
directly (i'd love a `--fail-on-warning` flag)?

Going the Logger route seems a little hackie, but it does seem like the
most generic way to capture everything.  We _could_ add some sort of hook
in MavenSimpleLogger, but at that point using a different SLF4J impl
_might_ be easier.

Thoughts/ideas?

Anyone else doing something to scan for warnings? (other than a `mvn
install | grep WARN`)

-Brian