一 点睛
默认生命周期的各个阶段,以及绑定到各阶段的插件及目标。
二 实战
1 构造一个Maven项目mavenQs
构建完后,目录结构如下:
F:\JavaEE\mavenQs>tree
pom.xml
└─src
├─main
│ └─java
│ └─org
│ └─fkjava
│ └─mavenqs
└─test
└─java
└─org
└─fkjava
└─mavenqs
2 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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.fkjava</groupId>
<artifactId>mavenQs</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>mavenQs</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<!-- 下面3个元素定义了exec插件的坐标 -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<!-- 指定绑定到compile阶段 -->
<phase>compile</phase> <!-- ① -->
<!-- 指定运行exec插件的java目标 -->
<goals>
<goal>java</goal> <!-- ② -->
</goals>
<!--- configuration元素用于为插件的目标配置参数 -->
<configuration>
<!-- 下面元素配置mainClass参数的值为:org.fkjava.mavenqs.App -->
<mainClass>org.fkjava.mavenqs.App</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
3 执行mvn compile
F:\JavaEE\mavenQs>mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------------< org.fkjava:mavenQs >-------------------------
[INFO] Building mavenQs 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mavenQs ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory F:\JavaEE\mavenQs\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mavenQs ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- exec-maven-plugin:1.3.1:java (default) @ mavenQs ---
[WARNING] Warning: killAfter is now deprecated. Do you need it ? Please comment on MEXEC-6.
Hello World!
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.037 s
[INFO] Finished at: 2019-08-18T16:54:35+08:00
[INFO] ------------------------------------------------------------------------
4 说明
执行上面命令不仅可以看到Maven执行compile插件的compile目标来编译项目,还可以看到Maven执行exec插件的java目标绑定到compile阶段。