关于java:Java-SpringBoot-应用使用命令行-mvn-springboot-run-启动的原理

33次阅读

共计 1070 个字符,预计需要花费 3 分钟才能阅读完成。

将应用程序打包为 jar 并应用嵌入式 HTTP 服务器的最大劣势之一是能够像运行其余任何应用程序一样运行这些提供了 Web 性能的应用程序。调试 Spring Boot 应用程序也很容易;不须要任何非凡的 IDE 插件或扩大。

spring-boot:run 是 steroïd 上的 java -jar 命令,作为 Maven 构建的一部分运行,确保所有必须的参数都传递给应用程序(例如资源)。spring-boot:run 还将通过在运行应用程序之前执行测试编译生命周期指标来确保我的项目被编译。

当运行 java -jar 时,将应用传递给该 JVM 的所有参数启动一个新的 JVM 实例。例如,应用 Spring 文档示例:

java -Xdebug -Xrunjdwp:server=y, \

transport=dt_socket, address=8000, suspend=
-jar target/myproject-0.0.1-SNAPSHOT.jar

将应用给定的参数启动一个全新的 JVM。须要确保在命令行中蕴含所有须要的内容,例如类门路元素、应用程序参数、JVM 选项等。

当运行 mvn spring-boot:run 时,会启动一个 Maven 构建,它将:

  1. 运行 test-compile 生命周期指标,默认为 Maven Resources and Compiler 插件的 resources:resources、compiler:compile、resources:testResources、compiler:testCompile 指标。
  2. 应用一系列参数启动应用程序,这些参数取决于在我的项目中定义的 Spring Boot Maven 插件配置(pom.xml、父项和设置、命令行等)。

其中包含:

  • 很多类门路元素:指标 / 类文件夹,其中可能蕴含应用程序所需的资源和库、Maven 依赖项等。
  • 是否 fork JVM(是否创立一个全新的 JVM 来运行应用程序或重用 Maven 构建的 JVM),请参阅插件的 fork 和 agent 参数。

如果察看到下列这种景象:

在 /src/main/resources/META-INF/resources/WEB-INF/ 中有一个带有 jsp 页面的 spring boot 应用程序。如果应用 mvn spring-boot:run 这些页面能够被 serve,然而如果应用 java -jar, 这些页面不会被应用程序找到。

要应用 java -jar 命令取得相似的后果,必须在类门路中蕴含您的资源,例如 javar -jar myapp.jar -cp $CLASSPATH;/path/to/my/project/target/classes/

正文完
 0