“ spring-boot-maven-plugin”和“ maven-compiler-plugin”之间有什么区别?

kkk*_*kv_ -2 java spring maven-3 maven spring-boot

我不知道之间的区别spring-boot-maven-pluginmaven-compiler-plugin

   <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
Run Code Online (Sandbox Code Playgroud)

这是否意味着Spring Boot Maven Plugin包括maven-compiler-plugin

我只是使用Spring Boot Maven Plugin就可以,不需要添加2个插件??

Swa*_*ala 7

maven-compiler-plugin 有两个目标。两者都已绑定到 Maven 生命周期中的适当阶段,因此在各自的阶段中自动执行。

compiler:compile 绑定到编译阶段,用于编译主要源文件。compiler:testCompile 绑定到测试编译阶段,用于编译测试源文件。

要了解有关 Maven 构建生命周期的更多信息 - http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

maven-compiler-plugin 用法 -

  • 使用 -source 和 -target javac 选项编译源代码
  • 使用不同的 JDK 编译源代码
  • 使用内存分配增强编译源代码
  • 传递编译器参数

最常用于定义源版本和目标版本。有时您可能希望将某个项目编译为与当前使用的版本不同的版本。javac 可以使用 -source 和 -target 接受此类命令。maven-compiler-plugin 也可以配置为在编译期间提供这些选项。

例如,如果您想使用 Java 8 语言功能(-source 1.8),并且还希望编译的类与 JVM 1.8(-target 1.8)兼容,则可以添加以下两个属性,它们是默认属性插件参数的名称:

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>
Run Code Online (Sandbox Code Playgroud)

或者直接配置插件:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>
Run Code Online (Sandbox Code Playgroud)

从技术上讲,如果需要创建可执行 jar 并确保源代码和目标代码具有特定版本(这是通过包含 maven- 来完成的),我们可以组合使用 spring-boot-maven-plugin 和 maven-compiler-plugin编译器插件)。

就我而言,我没有组合使用,但是当我的java项目是一个Spring Boot应用程序需要作为微服务等运行时,我们需要一个可执行的jar作为构建输出,所以使用Spring Boot Maven插件(仅)但是我的另一个java项目由spring bean或组件组成,将在其他外部应用程序中用作支持spring的库,但不需要单独运行,但必须确保指定源版本和目标版本,然后指定正常的“mvn包” “生成的 jar 应该可以工作。对于那个 Maven 编译器插件(仅)应该完成这项工作。


小智 5

Spring Boot Maven插件在Maven中提供了Spring Boot支持,使您可以打包可执行jar或war归档文件并就地运行应用程序。”

Maven编译器插件用于编译项目的源。”

  • 所以我只使用一个`Spring Boot Maven Plugin`可以吗? (2认同)