<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
</plugin>
你提到的这三个 Maven 插件分别是 maven-compiler-plugin
、maven-surefire-plugin
和 spring-boot-maven-plugin
,它们各自有不同的功能和作用。下面是对它们的解释:
maven-compiler-plugin
maven-compiler-plugin
用于控制 Maven 构建过程中 Java 源代码的编译。你可以使用它来指定编译器版本、编译选项等。通常,它会根据项目中的 pom.xml
文件配置,用指定的 JDK 来编译 Java 源代码。
- 主要功能: 编译 Java 源代码到字节码 (
.class
文件)。 - 常见配置: 可以指定 Java 版本(如 Java 8、11)和编译选项。
示例配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source> <!-- 指定源码使用 Java 11 -->
<target>11</target> <!-- 指定生成的字节码兼容 Java 11 -->
</configuration>
</plugin>
maven-surefire-plugin
maven-surefire-plugin
用于执行项目中的单元测试,它可以运行测试框架(如 JUnit 或 TestNG)编写的测试代码。在项目构建时,Surefire 插件会自动运行测试,并生成测试结果报告。
- 主要功能: 运行单元测试并生成测试报告。
- 作用阶段:
test
阶段,会自动在编译之后运行所有测试代码。
示例配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<includes>
<include>**/*Test.java</include> <!-- 运行所有以 Test 结尾的测试类 -->
</includes>
</configuration>
</plugin>
spring-boot-maven-plugin
spring-boot-maven-plugin
是 Spring Boot 项目常用的插件,它用于将 Spring Boot 应用打包成一个可执行的 JAR 或 WAR 文件,并且可以处理类路径下的依赖。这使得你可以直接使用 java -jar
命令运行打包好的 Spring Boot 应用,而不需要额外的部署环境。
- 主要功能:
- 将 Spring Boot 项目打包为可执行的 JAR 文件。
- 提供
repackage
目标用于重新打包带有依赖的 JAR 文件。 - 直接运行 Spring Boot 项目,如
mvn spring-boot:run
。
示例配置:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.3</version>
<executions>
<execution>
<goals>
<goal>repackage</goal> <!-- 将应用重新打包成可执行 JAR 文件 -->
</goals>
</execution>
</executions>
</plugin>
maven-jar-plugin
这是 Maven 的默认插件之一,主要用于将 Java 项目打包成标准的 JAR 文件。它仅仅负责将项目中的 .class 文件和资源文件打包成一个 JAR 包,不会处理项目依赖。
主要功能:
打包 JAR 文件:将编译好的 .class 文件和资源文件打包成标准的 JAR 文件。
自定义 MANIFEST 文件:你可以通过配置 MANIFEST.MF 文件,定义 JAR 包的元数据(如 Main-Class 等)。
适用场景:
- 当你需要创建一个普通的 JAR 文件,而不是一个包含所有依赖的可执行 JAR。
- 适用于非 Spring Boot 项目,或那些不需要将所有依赖打包进 JAR 文件的项目。
核心区别:
特性 | spring-boot-maven-plugin |
maven-jar-plugin |
---|---|---|
用途 | 打包 Spring Boot 应用 为可执行 JAR/WAR 文件 | 打包标准的 JAR 文件,通常不包含依赖 |
依赖打包 | 自动将所有项目依赖和资源打包到 JAR 中 | 只打包项目的 .class 文件和资源,不包含依赖 |
适用项目 | Spring Boot 项目 | 所有 Java 项目 |
可执行性 | 打包后的 JAR 文件可以通过 java -jar 命令直接运行 |
打包后的 JAR 文件通常无法直接运行 |
附加功能 | 提供启动、运行等 Spring Boot 项目特定的任务 | 只用于生成 JAR 文件,功能相对简单 |
总结
- maven-compiler-plugin: 用于编译 Java 源代码。
- maven-surefire-plugin: 用于执行单元测试并生成报告。
- spring-boot-maven-plugin: 用于打包 Spring Boot 应用并提供便捷的运行方式。
这三个插件在 Maven 项目中承担了编译、测试、打包等关键任务,确保项目能够顺利构建并以 Spring Boot 应用的方式运行。