>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring》、《Spring Cloud Alibaba微服务开发零基础入门到实操》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 26369 个阅读者 刷新本主题
 * 贴子主题:  Maven 插件 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2019-08-11 19:19:44     消息  查看  搜索  好友  邮件  复制  引用

  

Maven 插件

    Maven 有以下三个标准的生命周期:            
  • clean:项目清理的处理
  • default(或 build):项目部署的处理
  • site:项目站点文档创建的处理
     每个生命周期中都包含着一系列的阶段(phase)。这些 phase 就相当于 Maven 提供的统一的接口,然后这些 phase 的实现由 Maven 的插件来完成。

    我们在输入 mvn 命令的时候 比如  mvn clean,clean 对应的就是 Clean 生命周期中的 clean 阶段。但是 clean 的具体操作是由 maven-clean-plugin 来实现的。

     所以说 Maven 生命周期的每一个阶段的具体实现都是由 Maven 插件实现的。

     Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Maven 插件通常被用来:    
  • 创建 jar 文件
  • 创建 war 文件
  • 编译代码文件
  • 代码单元测试
  • 创建工程文档
  • 创建工程报告
     插件通常提供了一个目标的集合,并且可以使用下面的语法执行:

         <code>mvn :[goal-name]</code>

     例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:

         <code>mvn compiler:compile</code>

插件类型

     Maven 提供了下面两种类型的插件:

    

类型 描述
Build plugins 在构建时执行,并在 pom.xml 的 元素中配置。
Reporting plugins 在网站生成过程中执行,并在 pom.xml 的 <reporting/> 元素中配置。


     下面是一些常用插件的列表:

    

插件 描述
clean 构建之后清理目标文件。删除目标目录。
compiler 编译 Java 源文件。
surefile 运行 JUnit 单元测试。创建测试报告。
jar 从当前工程中构建 JAR 文件。
war 从当前工程中构建 WAR 文件。
javadoc 为工程生成 Javadoc。
antrun 从构建过程的任意一个阶段中运行一个 ant 任务的集合。

范例

     我们已经在我们的例子中大量使用了 maven-antrun-plugin 来输出数据到控制台上。让我们用一种更好的方式理解这部分内容,在 C:\MVN\project 目录下创建一个 pom.xml 文件。

< project   xmlns = " http://maven.apache.org/POM/4.0.0 "
     xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance "
     xsi:schemaLocation = " http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd " >
< modelVersion > 4.0.0 </ modelVersion >
< groupId > com.companyname.projectgroup </ groupId >
< artifactId > project </ artifactId >
< version > 1.0 </ version >
< build >
< plugins >
    < plugin >
    < groupId > org.apache.maven.plugins </ groupId >
    < artifactId > maven-antrun-plugin </ artifactId >
    < version > 1.1 </ version >
    < executions >
       < execution >
          < id > id.clean </ id >
          < phase > clean </ phase >
          < goals >
             < goal > run </ goal >
          </ goals >
          < configuration >
             < tasks >
                < echo > clean phase </ echo >
             </ tasks >
          </ configuration >
       </ execution >      
    </ executions >
    </ plugin >
</ plugins >
</ build >
</ project >

     接下来,打开命令终端跳转到 pom.xml 所在的目录,并执行下面的 mvn 命令。

                 mvn clean

     Maven 将开始处理并显示 clean 生命周期的 clean 阶段。

[INFO] Scanning for projects...

[INFO] ------------------------------------------------------------------

[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0

[INFO]    task-segment:

[INFO] ------------------------------------------------------------------

[INFO] [clean:clean {execution: default-clean}]

[INFO] [url=]

[INFO] Executing tasks

     [echo] clean phase

[INFO] Executed tasks

[INFO] ------------------------------------------------------------------

[INFO] BUILD SUCCESSFUL

[INFO] ------------------------------------------------------------------

[INFO] Total time: < 1 second

[INFO] Finished at: Sat Jul 07 13:38:59 IST 2012

[INFO] Final Memory: 4M/44M

[INFO] ------------------------------------------------------------------

     上面的例子展示了以下关键概念:            
  • 插件是在 pom.xml 中使用 plugins 元素定义的。
  • 每个插件可以有多个目标。
  • 你可以定义阶段,插件会使用它的 phase 元素开始处理。我们已经使用了 clean 阶段。
  • 你可以通过绑定到插件的目标的方式来配置要执行的任务。我们已经绑定了 echo 任务到 maven-antrun-plugin 的 run 目标。
  • 就是这样,Maven 将处理剩下的事情。它将下载本地仓库中获取不到的插件,并开始处理。
程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-03-07 13:00:08 重新编辑]
  Java面向对象编程-->面向对象开发方法概述之UML语言(下)
  JavaWeb开发-->Servlet技术详解(Ⅱ)
  JSP与Hibernate开发-->第一个helloapp应用
  Java网络编程-->客户端协议处理框架
  精通Spring-->计算属性和数据监听
  Vue3开发-->Vue Router路由管理器
  推荐一本微服务开发经典书籍《Spring Cloud Alibaba微服务开...
  微服务架构模型
  微服务架构模型
  几种常见的MAVEN仓库地址
  Spring MVC的@ExceptionHandler注解的用法
  HandlerInterceptor与WebRequestInterceptor的异同
  Redis的漏洞利用,原来大佬都是这样操作的
  什么是Redis?Redis的各项功能解决了哪些问题?
  如何实现Git服务间同步
  Spring+JPA+ehcache开启二级本地缓存
  Spring Cloud 服务发布与调用
  Zabbix后端存储ES的优化实践
  微服务中的Kafka与Micronaut
  spring源码阅读环境(几分钟下载包)
  mybatis-plus 注解实现多表关联查询的最佳实践
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 nihaota 
  
威望: 0
级别: 新手上路
魅力: 1315
经验: 1315
现金: 2944
发文章数: 243
注册时间: 0001-01-01
 消息  查看  搜索  好友  邮件  复制  引用


讨债公司
发文章时间 2022-10-28 21:18:09
 IPIP: 已设置保密 1 楼     
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。