spingboot 编译相关

<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-pluginmaven-surefire-pluginspring-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 应用的方式运行。

发表评论