maven系列:maven插件

前面我们讲了maven的几个生命周期,可能大家还有点懵,我们再来回顾一下首先我们会配置命令,右击项目-》run as-》Run Configure ,输入命令(比如clean package),点击Run,如下图
maven系列:maven插件


这个时候就进入到了相关的maven生命周期中,比如clean会进入clean的周期(为什么是clean的周期,我们简单的看一下上篇文章的clean周期中包含clean这一个goal),package会进入default生命周期(根据上篇文章中我们发现package属于default中),注意,比如生命周期clean有1-》2-》3-》4-》5这么几个阶段,clean处于3这个阶段,那么1,2是一定执行过了,相同原理,package也是
maven系列:maven插件

如上图,能清晰的看到,不同的命令会进入不同的生命周期,然后进入到不同的phase,不同的phase又有不同的plugin goal,都是依次执行的,这下明白了吧


=============================不起眼的分割线======================================


那么好,现在我们来讲讲插件,三种生命周期的插件能够完成日常工作,但是工作中总有些个性化或者定制需求,这就需要三方插件来做支撑了
一)引入
举几个例子
1)我们前面项目打包的时候,并没有把依赖jar包打进去(因为测试环境和生产环境都有对应的仓库),但是呢,我们就要把依赖jar包打进去
2)通过命令,自动启动web容器,同时部署web应用,这样直接打开浏览器就能访问相关接口了,方便冒烟测试
3)进行单元测试时,计算单元测试对代码的覆盖率
等等,还有很多

二)找寻
既然我们认识到插件的重要性,这些插件又不是maven自带的,那么到哪找呢,很容易,百度就能搜到:maven+自动部署 等

三)plugin goal绑定到具体phase
需要在pom.xml添加如下代码,放到build标签里面

  1. <plugins>
  2.                 <plugin>
  3.                         <groupId>org.apache.maven.plugins</groupId>
  4.                         <artifactId>maven-source-plugin</artifactId>
  5.                         <version>2.1.1</version>
  6.                         <executions>
  7.                                 <execution>
  8.                                         <id>attach-sources</id>
  9.                                         <phase>verify</phase>
  10.                                         <goals>
  11.  
  12.                                                 <goal>jar-no-fork</goal>
  13.                                         </goals>
  14.                                 </execution>
  15.                         </executions>
  16.                 </plugin>
  17.         </plugins>

复制代码



识别方式和依赖一样的(groupId,artifactId,version),我们还看到了execution片段,这个表示执行,id是这个执行的标识,phase是执行的任务,goal表示最终执行的goal【一个插件可以定义多个execution,一个execution有多个goal】
我们之前在setting.xml文件配置了插件,不知道大家是否还可记得

  1.               <pluginRepositories>
  2.                         <pluginRepository>
  3.                                 <id>central</id>
  4.                                 <name>Nexus Plugin Repository</name>
  5.                                 <url>http://central</url>
  6.                                 <releases><enabled>true</enabled></releases>
  7.                                 <snapshots><enabled>true</enabled></snapshots>
  8.                         </pluginRepository>
  9.               </pluginRepositories>

复制代码



这样保证插件也走私服仓库

四)执行
上面的例子,我们看出我们这个插件的goal会在生命周期verify的时候执行
右击项目-》Run as-》Run Configurations-》new Configuration
maven系列:maven插件

我们看下日志文件
maven系列:maven插件

生效了
我们刷新下项目中的target文件夹,多了一个jar包,可以打开看下里面的结构哦

更多插件详见 http://maven.apache.org/plugins/index.html