Maven使用图示-关于生命周期、命令行和IDEA插件

本文隶属于新手图文教程《IDEA+Maven搭建Spring+SpringMVC+Mybatis项目骨架》

下一篇:Tomcat之图文解析server.xml配置

目录 & 项目地址:http://git.oschina.net/mzdbxqh/ssm-study/

一、生命周期图解

1. LifeCycle and Phase(生命周期与阶段)

先用一张图解释一下Maven的生命周期及其阶段。

lifecycle

注:图中Default周期的阶段清单是精简版。其完整版可参照官方文档:参考链接

如上图所示,Maven定义了三个LifeCycle(生命周期),分别有以下意义:

  1. Clean - 负责项目构建生成文件的清理
  2. Default - 负责部署项目
  3. Site - 负责构建项目文档

Maven又给每个LifeCycle(生命周期)定义了一个Phase List(阶段清单),把生命周期分成了若干个阶段,并约定生命周期的阶段必须按次序执行。正常情况下,一个周期应该从阶段清单的第一项按次序执行到最后一项;但如果用户指定了阶段,则只从该周期的第一项依次执行到指定项。例如:

mvn clean install

将依次执行以下阶段(强行插张图):

mvn clean install

2. Phase(阶段)的实现

如上所述,maven是一套标准,定义了构建项目的通用方式。它本身并不对这些构建阶段进行实现。我们所看到的maven的功能,是通过Parent Poms预定义的插件实现的。

Plugin的Goal(目标)就是maven插件指定的、为达到某一目标而执行的一系列事务。以install插件为例:

install绑定

  1. maven-install-plugin:install - 把当前模块安装到本地maven仓库
  2. maven-install-plugin:install-file - 把外部的模块安装到本地maven仓库
  3. maven-install-plugin:help - 在命令行界面下打印该插件的帮助信息

借助图片,理解以下信息:

  1. maven-install-plugin:install这个目标绑定了生命周期Default的install阶段,执行到install阶段其实就是在执行maven-install-plugin:install。
  2. Integration-Test阶段没有绑定任何Goal,也就是说,默认情况下,在这个阶段,maven什么都不做。这是maven预留的接口,你可以绑定自己的实现。
  3. mvn install并不完全等价于maven-install-plugin:install。以mvn clean install那张流程图为例,执行mvn install其实调用了很多个阶段,即调用了很多个插件的目标,先后进行了校验、编译测试、打包、安装到本地仓库等过程。相比之下,执行maven-install-plugin:install仅仅是执行了把包安装到本地仓库这一个过程。

以下是maven在打包war/jar时,依次执行的Phase及其绑定的插件Goals

Phase(阶段)Goal(目标)意义
process-resourcesmaven-resources-plugin:resources对资源文件进行变量替换和复制到输出目录的操作
compilemaven-compiler-plugin:compile编译项目源代码
process-test-resourcesmaven-resources-plugin:testResources对test资源文件进行变量替换和复制到输出目录的操作
test-compilemaven-compiler-plugin:testCompile编译项目测试代码
testmaven-surefire:surefire:test执行测试代码
package

maven-jar-plugin:jar
maven-war-plugin:war

打包
installmaven-install-plugin:install把包安装到maven本地仓库
deploymaven-deploy-plugin:deploy部署到服务器

在使用默认配置的情况下,无需在study-parent/pom.xml的project.build.plugins节点重复定义以上插件。但如果需要进行个性化的配置,则需要定义插件并配置参数,以覆盖默认配置。

二、命令行方式

#打包语法:mvn package -PprofileID -DskipTests
#@ package   --周期只进行到package阶段
#@ -P        --指定要激活的profile(可选,不指定时激活默认active的profile)
#@ profileID --在pom的project.build.profiles.profile.id节点定义的ID
#@ -D        --指定系统变量(可选)
#@ skipTests --跳过测试(完整版为maven.test.skip=true,既跳过测试,也跳过测试代码的编译.也可以在pom里定义surefire插件并配置该参数)

#打包示范(生产环境)
mvn clean package -Pprod -DskipTests

#----------------------------------------------------------------------#

#测试语法:mvn test -Dtest=MyFirstTest
#@ test        --周期只进行到test阶段
#@ -D          --指定系统变量(可选),不指定时,对所有类名符合规则的测试类进行test
#@ MyFirstTest --指定测试类类名

#测试示范(全部测试)
mvn test

#----------------------------------------------------------------------#

#运行(不推荐使用,不方便关闭)
mvn clean install tomcat7:run -Pdev

#部署
mvn clean install tomcat7:deploy -Pprod

三、Maven可视化插件方式

maven图形插件

如图所示,IDEA界面右边缘有个Maven Project的标签,单击即可唤出Maven插件。

  • 在Profiles节点下,可以勾选需要激活的Profile
  • 在study-parent.lifecycle节点下,双击可以相应执行mvn phase命令
  • 在study-parent.plugins节点下,双击可以相应执行mvn plugin:goal命令

四、IDEA代理方式

1. 本地调试

下面演示一种比较简单的方法来新建tomcat:run的配置:

新建配置

  • 选择需要激活的Profiles
  • 在tomcat7:run上面点鼠标右键
  • 选择“Create 'study-parent [tomcat...'...”

配置界面

至此,IDEA自动创建了一个名为 study-parent[tomcat7:run] 的配置,相当于在命令行执行tomcat7:run,激活的profiles为dev(多个profiles用空格分开,在profilename前面加短横线表示禁用该profile)。

Before Launch(在运行该配置之前),我们需要maven帮忙build项目。按红箭头所示,点左下角“+”。

add new Configuration

在弹出的菜单中,选择“Run Maven Goal”。

执行maven goal

注意,这里所谓的Command line并不是真的让你填入mvn命令,而是让你填入该命令的参数,系统自动会执行mvn。

clean install -Pdev -Dmaven.test.skip=true
#注意,这里不需要敲入mvn,IDEA会负责调用该命令
#1、先清空上次构建的内容
#2、校验、编译、打包、安装一条龙
#参数:用名为dev的profile进行build
#参数:不用进行测试

以上是我填写的命令。

接着一路确定,完成配置。

配置结果

配置完成后,界面右上角出现了刚才的配置。点红线方框右边的虫子图标,即可Debug该配置。

2. 使用Junit进行测试

下面演示使用Junit进行测试的配置(当然也可以用maven自带的surefire)

into edit configurations

同样在界面右上角(windows版本的位置可能有点差别),在之前配置好的study-parent[tomcat7:run]右边,点击下拉箭头,然后选择"Edit Configurations..."

configurations

已经能看到已经配置好的tomcat7配置了,这里我们新建一个,点“+”

new Junit

选择Junit,下一行那个JUnit Test Discovery是覆盖率测试。

JUnit配置

按图示操作,即可完成配置。更多配置说明:参考链接 (等我熟悉之后再写篇文章具体说明一下)

转载于:https://my.oschina.net/mzdbxqh/blog/849040

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值