maven的生命周期和插件(九)

一、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:将最终的包复制到远程仓库,以便让其他开发人员与项目共享

maven的生命周期和插件(九)_第1张图片


(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查看插件介绍

maven的生命周期和插件(九)_第2张图片

(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。

maven的生命周期和插件(九)_第3张图片


maven的生命周期和插件(九)_第4张图片

【【【对于source插件,我们可以直接在myeclipse执行这个插件命令去把源文件进行打包:clean source:jar-no-fork。这里我们主要是讲怎么把插件绑定到命令上,所以还是回到主题上来。】】】


(3)在项目pom.xml里使用<build>里的<plugins>标签来配置。

附加说明:

<pluginManagement> 与 <distributionManagement> 以及<dependencyManagement>这种标签都是在根类定义,供子类继承的。

<dependencyManagement>:定义依赖

<distributionManagement>:定义局域网共享工厂仓库nexus

<distributionManagement>:定义插件  


<build>
	<plugins>
		<plugin>
	        <groupId>org.apache.maven.plugins</groupId>
	        <artifactId>maven-source-plugin</artifactId>
	        <version>2.4</version>
	       	<executions>
	       		<execution>
	       			<phase>package</phase>
	       			<goals>
	       				<goal>jar-no-fork</goal>
	       				<goal>test-jar-no-fork</goal>
	       			</goals>
	       		</execution>
	       	</executions>
      </plugin>
	</plugins>
  </build>


执行clean package命令后:

maven的生命周期和插件(九)_第5张图片


以上就是插件的一些介绍。


你可能感兴趣的:(maven的生命周期和插件)