maven

来源:互联网 发布:win7阻止安装软件 编辑:程序博客网 时间:2024/06/03 18:32

在讲述maven的构建生命周期中,会遇到以下几个概念:
- 生命周期(lifecycle)
- 阶段(phrase)
- 插件(plugins)
- 目标(goal)

1. 生命周期

maven有三种类型的生命周期
- clean
- default(或build)
- site

1.1 clean生命周期

clean生命周期由以下三个阶段
- pre-clean
- clean
- post-clean
当我们执行 mvn clean命令时,clean生命周期中的clean阶段以及clean阶段之前的pre-clean阶段将会被依次执行,即mvn cleanmvn pre-clean clean的效果是一样的;如果执行命令mvn post-clean,则clean生命周期中的三个阶段将依次被执行。mvn clean命令中的clean是阶段。
每一个阶段都绑定了某个插件(plugin)的某个目标(goal)。clean阶段默认绑定了maven-clean-plugin插件中的clean目标,clean目标是一个已经预定义好的动作。当然,用户也可以在pom文件中重新将clean阶段绑定到其它插件的某个目标。

1.2 default生命周期
阶段 描述 validate 验证项目是否正确 … … compile 编译该项目的源代码 … … test-compile 编译测试源代码到测试目标目录 … … test 运行测试,使用合适的单元框架(Junit) … … package 提取编译后的代码,并在其分发格式打包,如JAR,WAR或EAR文件 … … install 将包安装到本地存储库,它可以用作当地其他项目的依赖 deploy 复制最终的包到远程仓库与其他开发者和项目共享

所以,当我们执行命令mvn package时,package前面的compile与test阶段也会被执行。
##### 1.3 site生命令周期
site生命周期主要用于创建新的文档,创建报告,部署网站。有以下四个阶段:
- pre-site
- site
- post-site
- deploy

2. 插件

maven生命周期中的每个阶段其实默认绑定了某个插件的某个目标。当然,我们可以在pom文件中修改某个阶段绑定的目标。
举例说明,在某个空目录下新建如下一个pom.xml文件,定义pre-clean阶段绑定到maven-antrun-plugin插件的run目标,run目标其实就是打印pre-clean phase内容

<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.pre-clean</id>             <phase>pre-clean</phase>         <goals>            <goal>run</goal>         </goals>         <configuration>            <tasks>               <echo>pre-clean phase</echo>            </tasks>         </configuration>      </execution>    </executions>   </plugin></plugins></build></project>

在该pom文件所在的路径下执行命令mvn pre-clean,会看到如下输出:

E:\mvn>mvn pre-clean[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building project 1.0[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-antrun-plugin:1.1:run (id.pre-clean) @ project ---[INFO] Executing tasks     [echo] pre-clean phase[INFO] Executed tasks[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.333 s[INFO] Finished at: 2017-11-05T23:56:08+08:00[INFO] Final Memory: 8M/241M[INFO] ------------------------------------------------------------------------
原创粉丝点击