一、maven有三套声明周期,他们是互相独立的:
(1)clean生命周期(只要我们执行clean命令,就会执行以下三个步骤)
pre-clean:执行一些需要在clean之前完成的工作
clean:移除所有上一次构建生成的文件
post-clean:执行一些需要在clean之后立刻完成的工作
(2)compile生命周期
包含如下一些流程步骤:
validate
generate-sources
process-sources
generate-resources
process-resources:复制并处理资源文件,至目标目录,准备打包
compile:编译项目的源代码
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources:复制并处理资源文件,至目标测试目录
test-compile:编译测试源代码
process-test-classes
test:使用合适的单元测试框架运行测试,这些测试代码不会被打包或部署。
prepare-package
package:接受编译好的代码,打包或可发布的格式,如jar
pre-integration-test
integration-test
post-integration-test
verify
install:将包安装至本地仓库,以便让其他项目依赖
deploy:将最终的包复制到远程仓库,以便让其他开发人员与项目共享
(3)site(做站点)的生命周期(了解就可以,基本不用到)
pre-site:执行一些需要在生成站点文档之前完成的工作
site:生成项目的站点文档
post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy:将生成的站点文档部署到特定的额服务器上
二、maven的插件
现实工作中我们要使用到maven的插件,其实都是跟complie生命周期一起使用的。
我们也把compile生命周期里面的每一个步骤称为是一个目标。这里面的每一个步骤(每一个目标)都是由插件来执行的,插件来支撑生命周期的运转。
目标都是包含在插件里面的,在一个插件中可以开发多个目标。
maven的一个个插件就对应着一个个的功能,当我们想在命令里添加一些额外(添加额外的功能)的操作,比如执行mvn:package命令时,也能把源代码一下打包出来,这个时候就要使用插件的捆绑了,把插件里的某个目标捆绑到生命周期的步骤上来。
举个例子来理解一下:假设maven里开发了100个插件,而从中抽取出10个主要的类来组成complie生命周期里的步骤,即10个目标(这里就很好理解目标都是包含在插件里面的,在一个插件中可以开发多个目标这句话啦,一个插件里包含N个类,每个类都是一个目标)。在执行mvn:test或是mvn:install或是其他一些命令时,会针对性的去执行那10个目标(也只能从这10个目标中选择对应的来执行,因为人家规定了只有10个目标)。可能有些功能在插件中开发出来了,但是没有把这些功能定义到compile的生命周期里,而我们又想在执行mvn:test或是mvn:install或是其他一些命令时,能自动的去执行到其他的功能,这个时候就要把这些功能绑定到某一个命令上,这样在执行完命令后,就会自动的去执行到绑定的功能了。
接下来来操作一下,怎么在mvn:package命令上加上打包源文件的插件:
(1)去到maven的官网:http://maven.apache.org/,点击Maven Plugins查看插件介绍
(2)打包源文件的话,是使用source这个插件,点击进去:
这里为什么不用source:jar和source:test-jar?因为这两个插件已经默认绑定在package命令上了。如果把source:jar和source:test-jar绑定到install命令上,在在执行install命令的时候,会执行两次source:jar和source:test-jar。因为执行install命令的时候,会先执行package命令,而source:jar和sourcetest-jar已经默认绑定在package上,所以执行到package命令后会执行source:jar(source:test-jar),执行了install后,会再次执行source:jar(source:test-jar)。所以一般情况下,我们都是使用source:jar-no-fork或test-jar-no-fork。
【【【对于source插件,我们可以直接在myeclipse执行这个插件命令去把源文件进行打包:clean source:jar-no-fork。这里我们主要是讲怎么把插件绑定到命令上,所以还是回到主题上来。】】】
(3)在项目pom.xml里使用
【
附加说明:
】
org.apache.maven.plugins
maven-source-plugin
2.4
package
jar-no-fork
test-jar-no-fork
执行clean package命令后:
以上就是插件的一些介绍。