1. Maven有以下三个标准的生命周期:
1.1. clean: 项目清理的处理。
1.2. default(或build): 项目部署的处理。
1.3. site: 项目站点文档创建的处理。
2. 每个生命周期中都包含着一系列的阶段(phase)。这些phase就相当于Maven提供的统一的接口, 然后这些phase的实现由Maven的插件来完成。
3. 我们在输入mvn命令的时候, 比如: mvn clean, clean对应的就是Clean生命周期中的clean阶段。但是clean的具体操作是由maven-clean-plugin来实现的。
4. 所以说Maven生命周期的每一个阶段的具体实现都是由Maven插件实现的。Maven实际上是一个依赖插件执行的框架, 每个任务实际上是由插件完成。
5. Maven插件通常被用来:
5.1. 创建jar文件。
5.2. 创建war文件。
5.3. 编译代码文件。
5.4. 代码单元测试。
5.5. 创建工程文档。
5.6. 创建工程报告。
6. Maven提供了下面两种类型的插件:
7. Maven一些常用插件的列表:
8. 把maven-antrun-plugin插件添加到Clean生命周期的各个阶段
8.1. 我们将maven-antrun-plugin:run目标添加到pre-clean、clean和post-clean阶段中。这样我们可以在clean生命周期的各个阶段显示文本信息。
8.2. 修改MavenWeb工程的pom.xml文件
<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>
<!-- 公司或者组织的唯一标志, 并且配置时生成的路径也使用它, 如: com.bjbs, maven会将该项目打成的jar或war包放本地路径: /com/bjbs -->
<groupId>com.bjbs</groupId>
<!-- 这是工程的标识 -->
<artifactId>MavenWeb</artifactId>
<!-- 工程的版本号 -->
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<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>
<execution>
<id>id.clean</id>
<phase>clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>clean phase</echo>
</tasks>
</configuration>
</execution>
<execution>
<id>id.post-clean</id>
<phase>post-clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>post-clean phase</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
8.3. 在MavenWeb项目根目录下执行: mvn post-clean命令
8.4. 例子展示了以下关键概念
- 插件是在pom.xml中使用plugins元素定义的。
- 每个插件可以有多个目标。
- 你可以定义阶段, 插件会使用它的phase元素开始处理。我们已经使用了pre-clean、 clean和post-clean阶段。
- 你可以通过绑定到插件的目标的方式来配置要执行的任务。我们已经绑定了echo任务到maven-antrun-plugin的run目标。
- 就是这样, Maven将处理剩下的事情。它将下载本地仓库中获取不到的插件, 并开始处理。