主要介绍Maven的几个常见第三方插件(cobertura、findbugs、source、assembly、插件开发)配置和使用,接
maven本质上是一个插件框架,它的所有工作都交给插件来做,每个插件可以有多个goal。
除了自带的插件之外还有很多比较成熟的第三方插件,我们也很容易上手进行简单的插件开发,下面一一介绍
1 自带插件
maven自带的核心插件为Build plugins和Reporting plugins。 mvn compile编译源码实际上就利用到了maven-compiler-plugin,其他phase也类似用到了相应的插件 关于maven自带的核心插件见:
2 第三方插件
2.1 maven有很多成熟的第三方插件 如jetty 对于web开发使用jetty作为容器 native 编译c和c++代码 sql 执行sql脚本 其他更多见: 下面具体介绍下单元测试覆盖率插件cobertura、findbugs
2.2 maven2的cobertura插件
2.2.1 coberturacobertura是一款用来计算java代码测试覆盖率的工具,基于jcoverage。能计算每个类、包、整个工程的行覆盖率和分支覆盖率以及代码复杂度(Cyclomatic complexity)并生成html或xml形式的报告,让用户很方便的查看代码的单元测试覆盖率情况。cobertura的原理是通过对class文件进行插桩然后计算。
2.2.2 maven2的cobertura插件介绍
插件地址为http://mojo.codehaus.org/cobertura-maven-plugin/index.html a、首先在pom中添加配置如下<!-- Crayon Syntax Highlighter v_2.7.2_beta -->
1 2 3 4 5 6 7 8 9 | <reporting> <outputDirectory> target / site < / outputDirectory > <plugins> <plugin> <groupId> org . codehaus . mojo < / groupId > <artifactId> cobertura - maven - plugin < / artifactId > < / plugin > < / plugins > < / reporting > |
<!-- [Format Time: 0.0013 seconds] -->
b、运行goal 到项目根目录下运行mvn cobertura:cobertura 将会插桩class文件、测试、生成覆盖率报告 cobertura支持的goal如下: cobertura:check Check the Last Instrumentation Results. cobertura:clean Clean up rogue files that cobertura maven plugin is tracking. cobertura:dump-datafile Cobertura Datafile Dump Mojo. cobertura:instrument Instrument the compiled classes. cobertura:cobertura Instruments, Tests, and Generates a Cobertura Report. c、在target\site\cobertura目录下生成报告文件,打开index.html可以查看具体报告 mvn cobertura:cobertura执行前会执行test phase,即执行单侧代码
2.3 maven2的findbugs插件
2.3.1 findbugs是静态检查java代码的工具,根据一些bugs的表达式检查代码中的bugs,可以自定义检查规则
2.3.2 maven2的findbugs插件介绍
插件地址为 a、首先在pom中添加配置如下 不同goal的配置略有不同,可自己调整,以下介绍的是mvn findbugs:findbugs的配置<!-- Crayon Syntax Highlighter v_2.7.2_beta -->
1 2 3 4 5 6 7 8 9 | <reporting> <plugins> <plugin> <groupId> org . codehaus . mojo < / groupId > <artifactId> findbugs - maven - plugin < / artifactId > <version> 2.3.1 < / version > < / plugin > < / plugins > < / reporting > |
<!-- [Format Time: 0.0012 seconds] -->
b、运行goal 到项目根目录下运行mvn findbugs:findbugs将会开始检查,并生成bugs报告 findbugs支持的goal如下:
<!-- Crayon Syntax Highlighter v_2.7.2_beta -->
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | findbugs :check FailthebuildiftherewereanyFindBugsviolationsinthesourcecode .An XMLreportisputoutbydefaultinthetargetdirectorywiththeerrors .To seemoredocumentationaboutFindBugs'options ,pleaseseetheFindBugs Manual . . findbugs :findbugs GeneratesaFindBugsReportwhenthesitepluginisrun .TheHTMLreportis generatedforsitecommandsonly . findbugs :gui LaunchtheFindbugsGUI .ItwillusealltheparametersinthePOMfle . findbugs :help Displayhelpinformationonfindbugs -maven -plugin . Call mvnfindbugs :help -Ddetail =true -Dgoal = <goal-name> todisplayparameterdetails . |
<!-- [Format Time: 0.0035 seconds] -->
c、在target\site\findbugs目录下生成报告文件,打开index.html可以查看具体报告
mvn findbugs:findbugs绑定到了compile phase,即在编译时自动检查
2.4 maven的source插件
2.4.1 source用来将工程打包成带源代码的jar包
2.4.2 pom配置如下<!-- Crayon Syntax Highlighter v_2.7.2_beta -->
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <build> <plugins> <plugin> <groupId> org . apache . maven . plugins < / groupId > <artifactId> maven - source - plugin < / artifactId > <version> 2.1.2 < / version > <executions> <execution> <id> attach - sources < / id > <phase> verify < / phase > <goals> <goal> jar - no - fork < / goal > < / goals > < / execution > < / executions > < / plugin > < / plugins > < / build > |
<!-- [Format Time: 0.0022 seconds] -->
直接运行mvn clean install会在target下打出两个包,带***-sources.jar的为源码包
2.5 maven的assembly插件
2.5.1 assembly可用来将工程依赖的jar包和工程都打成一个jar打包
2.5.2 pom配置如下<!-- Crayon Syntax Highlighter v_2.7.2_beta -->
1 2 3 4 5 6 7 8 9 10 11 12 | <build> <plugins> <plugin> <artifactId> maven-assembly-plugin </artifactId> <configuration> <descriptorRefs> <descriptorRef> jar-with-dependencies </descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build> |
<!-- [Format Time: 0.0008 seconds] -->
直接运行mvn assembly:assembly会在target下出现***-with-dependencies.jar的jar包
2.6 插件开发
maven的插件开发相当简单,可以参考