一、maven生命周期

http://ifeve.com/introduction-to-the-lifecycle/

https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

1.内置的三个生命周期

我这边的简单理解是:

首先一共有三个内置的生命周期,一个为clean,一个为default,一个为site。

There are three built-in build lifecycles: default, clean and site. The default lifecycle handles your project deployment, the clean lifecycle handles project cleaning, while the site lifecycle handles the creation of your project's site documentation.

 

2.生命周期的组成

一个生命周期包含了许多阶段,比如compile阶段,install阶段等等。阶段是有顺序的,典型的如下:

3.goal是什么

在讲阶段之前,先说下goal。

goal可以简单理解为一个功能,功能是由插件实现的。

牛逼的插件可以有很多个goal,当然,我们不鼓励一个插件做了所有的事,毕竟unix哲学嘛。

比如compile插件,org.apache.maven.plugins:maven-compiler-plugin。

它既可以编译main下面的代码,也可以编译test下面的代码,这里就被分成了两个goal:

compile和testCompile。

当然,也有个直观介绍(idea中的maven视图),看下图:

4.阶段的组成

每个阶段由0到多个目标(goal)组成。

但是,goal可以选择不绑定到阶段,也可以绑定到多个阶段。

所以执行整个生命周期的过程,就是按照顺序,执行各个phase,具体到每个phase的时候,按顺序执行绑定到该phase的goal。

以打jar包为例,默认maven已经帮我们在每个phase中绑定了goal,如下:

5.如果我们想在某个阶段新增goal怎么办呢?

可以像下面这样,在<phase>元素中指定:

以上配置<phase>中配置了process-test-resources阶段,该阶段我们附加了一个goal,那就是time。

再看下面的配置:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
以上配置在<phase>中指定了compile,即在compile阶段附加一个goal,该goal为当前插件的jar。

二、default生命周期中打包时默认绑定的插件

https://maven.apache.org/ref/3.6.0/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging

专门对比了下jar包和war包,可以发现只有打包阶段用的插件不一样:

这个可以验证,在idea中,一个默认的maven web工程,在maven视图中,plugins中显示的插件如下:

可以看到,剩下的几个插件,正好是war包pom中默认绑定的那几个插件。

maven打war包的过程中,都用了哪些插件呢?的更多相关文章

  1. maven编译war包,pom中必须有的几个dependency

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> ...

  2. IDEA多模块父子依赖maven项目war包部署

    IDEA多模块父子依赖maven项目war包部署 Posted on 2018-04-25 | In IDEA | | Visitors 286 IDEA全称为IntrlliJ IDEA,它是一款非常 ...

  3. rpm包安装过程中依赖问题“libc.so.6 is needed by XXX”解决方法

    rpm包安装过程中依赖问题"libc.so.6 is needed by XXX"解决方法 折腾了几天,终于搞定了CentOS上的Canon LBP2900打印机驱动.中间遇到了一 ...

  4. Maven开发基础总结(Maven自启动,Maven打war包,Maven热部署)

    学习内容: 1.不依赖外部Tomcat,自己启动方式部署 2.Maven打war包,远程部署到centOS 3.Maven热部署(不关闭Tomcat部署应用)   做maven开发前提: 1.编码UT ...

  5. ubuntu 可能的依赖包,安装过程中根据需要安装

    /*************依赖包安装****************/下面是可能的依赖包,安装过程中根据需要安装 build-essential - libglib2.-dev libpng3 li ...

  6. Eclipse中打包maven项目-war包方式

    IntelliJ IDEA打包成war(包括maven项目)点击打开链接 首先要在maven项目中的pom.XML中配置好需要的配置: <project xmlns="http://m ...

  7. maven生成war包的两种方式

    war包即对WEB应用程序进行打包,用于应用容器的部署.如在jboss中只要把war包丢入deploy目录下即可发布自己的应用了.打包方式有很多中,很多工具本身就支持此功能.下面主要介绍通过maven ...

  8. 用Maven部署war包到远程Tomcat服务器

    过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们 ...

  9. maven 打war包tomcat服务器乱码问题

    今天用maven3的命令打war包,命令是mvn clean package -Dmaven.test.skip=true,打包后放在tomcat跑起来后发现tomcat的日志出现乱码. 后来在pom ...

随机推荐

  1. 格林威治时间(GTM)转北京时间

    需要模块:pytz(三方)和datetime import pytz import datetime time = "Tue, 12 Jun 2012 14:03:10 GMT" ...

  2. [mobile angular ui 1.2]桌面环境下如何自动隐藏左侧的sidebar?how to hide left sidebar on desktop browser by default?

    使用mobile angular ui 1.2开发,在默认情况下,桌面浏览器中sidebar-left是默认打开的,怎么才能在程序初始打开时关闭sidebar-left呢? 目前我找到的唯一可行办法就 ...

  3. 【中文分词】DAG、DP、HMM、Viterbi

    http://blog.sina.com.cn/s/blog_8267db980102wq41.html http://www.cnblogs.com/leeshine/p/5804679.html ...

  4. (Dos)/BAT命令入门与高级技巧详解(转)

    目录 第一章 批处理基础 第一节 常用批处理内部命令简介 1.REM 和 :: 2.ECHO 和 @ 3.PAUSE 4.ERRORLEVEL 5.TITLE 6.COLOR 7.mode 配置系统设 ...

  5. jQuery form的load函数与el表达式赋值的冲突问题

    问题: 在使用el表达式给表单中的项赋初始值的时候,总是失败,物流公司没有自动选中,物流单号也没有显示值. <form id="form" method="post ...

  6. Linux远程管理之SVN,VNC

    一.远程管理的基本概念 首先我们来初略的讲讲远程管理的一些基本概念.对于我们使用的计算机来说,如果是个人计算机,就没有远程管理这一概念了,想用的时候开机就能使用,而对于我们的服务器来说,就不同了,对于 ...

  7. SpringMVC由浅入深day01_5注解的处理器映射器和适配器

    5 注解的处理器映射器和适配器 在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandle ...

  8. 关于WPF自定义控件(导航)

    1.在WPF中自定义控件(1)概述 2.在WPF中自定义控件(2) UserControl 3.在WPF中自定义控件(3) CustomControl (上) 4.在WPF中自定义控件(3) Cust ...

  9. CM和CDH的安装-准备工作

    估计要分开来两篇博客说明,因为截图较多. 1.三个节点cdh1(主节点),cdh2,cdh3 配置就用一张图来说明,因为资源有限 2.版本依赖说明: CDH-5.9.0-1.cdh5.9.0.p0.2 ...

  10. [Cubieboard] 在 Cubieboard 上安装 Node.js 和 npm

    你有两个选择可以实现在Cubieboard上安装NodeJS,下载别人已经编译完成适用于Cubieboard的NodeJS二进制包,或者自己下载源码自行在Cubieboard上进行编译. 使用编译完成 ...