主要介绍Maven的几个常见第三方插件(cobertura、findbugs、source、assembly、插件开发)配置和使用,接Maven介绍

maven本质上是一个插件框架,它的所有工作都交给插件来做,每个插件可以有多个goal。
除了自带的插件之外还有很多比较成熟的第三方插件,我们也很容易上手进行简单的插件开发,下面一一介绍

1 自带插件
maven自带的核心插件为Build plugins和Reporting plugins。
mvn compile编译源码实际上就利用到了maven-compiler-plugin,其他phase也类似用到了相应的插件
关于maven自带的核心插件见:http://maven.apache.org/plugins/index.html

2 第三方插件
2.1 maven有很多成熟的第三方插件
如jetty 对于web开发使用jetty作为容器
native 编译c和c++代码
sql 执行sql脚本
其他更多见:http://maven.apache.org/plugins/index.html#Outside_The_Maven_Land
下面具体介绍下单元测试覆盖率插件cobertura、findbugs

2.2 maven2的cobertura插件
2.2.1 cobertura

cobertura是一款用来计算java代码测试覆盖率的工具,基于jcoverage。能计算每个类、包、整个工程的行覆盖率和分支覆盖率以及代码复杂度(Cyclomatic complexity)并生成html或xml形式的报告,让用户很方便的查看代码的单元测试覆盖率情况。cobertura的原理是通过对class文件进行插桩然后计算。

2.2.2 maven2的cobertura插件介绍
插件地址为http://mojo.codehaus.org/cobertura-maven-plugin/index.html
a、首先在pom中添加配置如下

 
 

Java

 
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>

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插件介绍
插件地址为http://mojo.codehaus.org/findbugs-maven-plugin/index.html
a、首先在pom中添加配置如下
不同goal的配置略有不同,可自己调整,以下介绍的是mvn findbugs:findbugs的配置

 
 

Java

 
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>

b、运行goal
到项目根目录下运行mvn findbugs:findbugs将会开始检查,并生成bugs报告
findbugs支持的goal如下:

 
 

XHTML

 
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.

c、在target\site\findbugs目录下生成报告文件,打开index.html可以查看具体报告
mvn findbugs:findbugs绑定到了compile phase,即在编译时自动检查

2.4 maven的source插件
2.4.1 source

用来将工程打包成带源代码的jar包
2.4.2 pom配置如下

 
 

Java

 
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>

直接运行mvn clean install会在target下打出两个包,带***-sources.jar的为源码包

2.5 maven的assembly插件
2.5.1 assembly

可用来将工程依赖的jar包和工程都打成一个jar打包
2.5.2 pom配置如下

 
 

XHTML

 
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>

直接运行mvn assembly:assembly会在target下出现***-with-dependencies.jar的jar包

2.6 插件开发
maven的插件开发相当简单,可以参考http://trinea.iteye.com/blog/1171957

转载自:http://www.trinea.cn/android/maven-plugin/

Maven常用插件配置和使用的更多相关文章

  1. maven常用插件配置详解

    常用插件配置详解Java代码    <!-- 全局属性配置 --> <properties> <project.build.name>tools</proje ...

  2. maven常用插件配置

    1.maven-jar-plugin插件 <!-- 排除资源文件中的properties文件,不需要打到jar中,后面通过assembly插件打包到conf目录中 --><plugi ...

  3. maven常用插件pom配置

    一.问题描述: 部署一个maven打包项目时,jar包,依赖lib包全部手动上传至服务器,然后用maven部署报错:Exception in thread "main" java. ...

  4. Maven常用插件简单配置

    好久不见,甚是想念.一日不见,如隔三秋. 从春节到现在已经很久没有回归博客园了,今天回来温习一下maven常用的一些插件的配置,学东西一个很简单的诀窍就是重复重复再重复,这样一定能把知识掌握的很牢靠. ...

  5. Maven常用插件

    maven利用各种插件来管理构建项目,本文记录下工作中常用到的插件及使用方法.每个插件都会提供多个目标(goal),用于标示任务.各插件配置在pom.xml里,如下: <build> [. ...

  6. maven常用插件总结

    maven本质上是一个插件框架,几乎所有的功能都是通过各种各样的插件来实现的.maven默认会依据项目类型自动把构建时的各阶段(Lifecycle和phase)自动绑定(Lifecycle Mappi ...

  7. 日志分析平台ELK之日志收集器logstash常用插件配置

    前文我们了解了logstash的工作流程以及基本的收集日志相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13761906.html:今天我们来了解下l ...

  8. [maven] 常用插件解析

    参考资料:http://my.oschina.net/zh119893/blog/276090 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完 ...

  9. 【转】maven常用插件介绍

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...

随机推荐

  1. MTK平台Android项目APK预置方案

    项目开发中,通常需要向系统中预置一些APK,这里简单介绍一下MTK平台预置APK的方法. 需要预置的apk可以放置在目录:vendor/mediate/${Project}/artifacts/out ...

  2. Windows Text Copyer 1.1绿色版

    软件名称: Windows Text Copyer软件语言: 简体中文授权方式: 免费软件运行环境: Win 32位/64位软件大小: 269KB图片预览: 软件简介:有些网站限制复制,你可以用这个软 ...

  3. 万航单位换算器 V1.0 绿色版

    软件名称: 万航单位换算器软件语言: 简体中文授权方式: 免费软件运行环境: Win 32位/64位软件大小: 347KB图片预览: 软件简介:万航单位换算器是一个可以随意转换单位的绿色软件,这个软件 ...

  4. Memcached启动脚本

    ched: MemCached Daemon # # chkconfig: - # description: MemCached Daemon # # Source function library. ...

  5. wpf之DataTrigger 数据触发器

    wpf中,根据数据的值的不同,UI的界面随之改变(显示控件.隐藏控件以及改变控件的其它属性), 这时我们可以用DataTrigger数据触发器. 下面两个案例实现同样的功能,当条件(数据的值)不同时, ...

  6. Yii2.0的安装与配置教程

    版权声明:本文为博主原创文章,未经博主允许不得转载. PHP版本需求:PHP5.4.0以上,因为Yii2.0基于PHP5.4以上版本进行了完全重写. 目前有两种方法可以安装Yii2.0,一种是安装Co ...

  7. RPC框架基本原理(一):服务注册

    什么是RPC框架 RPC整个过程涉及四类对象:客户端.客户端代理.服务端和服务端代理.RPC要求客户端和服务端之间约定好调用接口和传输格式(如JSON,Xml等),客户端在调用该接口时,由客户端的代理 ...

  8. android命令行网络时间同步

    一.简介 Android基于Linux平台的开源手机操作系统. 二.原理 既然是Linux,那就应该支持linux的各种命令行,高度的可配置,但实验发现Android是Google的一个高度阉割版的l ...

  9. 如何将excel导入到数据库中并在gridview中显示

    在页面上导入个excel文件,将该excel中的数据导入到数据库中,并且在页面的gridview中把数据显示出来. .在Asp.net中怎样将Excel文件中的数据导入到GridView中呢? 首先我 ...

  10. react中文API解读一(快速开始)

    记下自己的react学习之路 ,官方文档写的很详尽,学起来应该比较简单 官方文档地址:react.http://reactjs.cn/react/docs/getting-started.html 1 ...