I usually set up my Maven-build projects to be as quiet as possible. My preference is "Silence is Golden": if the command says nothing on the command line, it worked; if it failed, it prints to STDERR.
However, sometimes I want to see some output while I'm tracking down a problem. How best to reconcile these?
Maven 3.3.1 (maybe earlier)
introduced the .mvn
directory for your project root (note
leading DOT). In here you can keep a jvm.config
file which
has the flags to the java
command used when running
mvn
. Here's my usual jvm.config
:
-Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -Dorg.slf4j.simpleLogger.log.Sisu=WARN
This quiets maven down quite a bit, using the properties to control Maven's more recent logger, SLF4J. And I normally commit that into my project code repository.
And for those times I'd like more output? I could edit the file, but I don't trust myself enough not to accidentally commit those temporary changes. So I use the command line:
$ MAVEN_OPTS='-Dorg.slf4j.simpleLogger.defaultLogLevel=INFO' mvn
Ultimately mvn
reads .mvn/jvm.config
, putting the contents into the
variable MAVEN_OPTS
, and uses MAVEN_OPTS
in the
invocation of java
, and you can override the variable
yourself on the command line.
No comments:
Post a Comment