最近在弄jenkins的自动打包部署

出现个问题,项目是用的mvn,打包的时候,如果是在控制台下还好。

如果是在jenkins下,看console output,往中心仓库artifactory提交包的时候,会显示下面一堆:

Uploaded: http://xxx:8081/artifactory/libs-release-local/abc/maven-metadata.xml (315 B at 17.1 KB/sec)  
Uploading: http://xxx:8081/artifactory/libs-release-local/abc/d/admin-9.1.war  
20000/21969 KB  
20002/21969 KB  
20004/21969 KB  
20006/21969 KB  
20008/21969 KB  
20010/21969 KB  
20012/21969 KB  
20014/21969 KB  
20016/21969 KB  
20018/21969 KB  
20020/21969 KB  
20022/21969 KB  
20024/21969 KB  
20026/21969 KB  
20028/21969 KB  
20030/21969 KB  
20032/21969 KB  
20034/21969 KB  
20036/21969 KB  
20038/21969 KB  
20040/21969 KB  
20042/21969 KB  
20044/21969 KB  
......

长度无比长,垃圾东西。如何将之屏蔽呢?

首先去修改mvn的日志级别,缺省是INFO,提高到WARN:

MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn -ff  clean install  

我去,INFO是都没了,但是这个居然还在!!!!

查了下java的日志优先级:

ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF  

上面只有FATAL和OFF了,说明这个是个副产品,不是mvn控制的,而是上传的时候产生的。

没办法了,祭出shell大法:

mvn -ff  clean install | egrep "(^\[INFO\])"  

把开头是[INFO]的显示出来,如果不够,还可以加上[DEBUG]

mvn -ff  clean install | egrep "(^\[INFO\]|^\[DEBUG\])"  

如果要取反,不显示以[INFO]和[DEBUG]打头的那些行:

mvn -ff  clean install | egrep -v "(^\[INFO\]|^\[DEBUG\])"  

最后,mvn全静默,只有出错才显示的方式:

mvn -ff -q clean install  

这下世界都安静了。

再说一下 mvn build 参数的调试:

mvn的parent pom里面指定了local file repo

    <repositories>
        <repository>
            <id>project.local</id>
            <name>project</name>
            <url>file://${project.basedir}/../repo</url>
        </repository>
    </repositories>

而且指定了-s setting.xml,里面也有artifactory的repos. 在子模块module里不知道是否正常获得了。

执行下面命令就可以了:

mvn help:evaluate  
${project.repositories}