Java SpringBoot 应用使用命令行 mvn spring-boot run 启动的原理

简介: 将应用程序打包为 jar 并使用嵌入式 HTTP 服务器的最大优势之一是可以像运行其他任何应用程序一样运行这些提供了 Web 功能的应用程序。 调试 Spring Boot 应用程序也很容易; 不需要任何特殊的 IDE 插件或扩展。

将应用程序打包为 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/

目录
相关文章
|
15天前
|
Java 数据库连接 Spring
Spring Boot命令行启动添加参数
Spring Boot命令行启动添加参数
|
Java
Springboot集成SpringCloud启动后Eureka报错
Springboot集成SpringCloud启动后Eureka报错
270 0
Springboot集成SpringCloud启动后Eureka报错
|
Java Linux Shell
Linux下启动java程序的通用脚本
Linux下启动java程序的通用脚本
342 0
|
JSON Java fastjson
使用spring boot开发时java对象和Json对象转换
使用spring boot开发时java对象和Json对象转换
1300 1
使用spring boot开发时java对象和Json对象转换
|
机器学习/深度学习 IDE Java
springboot 应用迁移
快速学习 springboot 应用迁移
129 0
springboot 应用迁移
|
存储 安全 前端开发
手把手教你用Java实现一套简单的鉴权服务(SpringBoot,SSM)(万字长文2)
手把手教你用Java实现一套简单的鉴权服务(SpringBoot,SSM)(万字长文)
手把手教你用Java实现一套简单的鉴权服务(SpringBoot,SSM)(万字长文2)
|
存储 前端开发 安全
手把手教你用Java实现一套简单的鉴权服务(SpringBoot,SSM)(万字长文1)
手把手教你用Java实现一套简单的鉴权服务(SpringBoot,SSM)(万字长文)
手把手教你用Java实现一套简单的鉴权服务(SpringBoot,SSM)(万字长文1)
|
NoSQL 安全 Java
SpringBoot 自动配置的原理|学习笔记
快速学习 SpringBoot 自动配置的原理
138 0
SpringBoot 自动配置的原理|学习笔记
|
Java Spring
自定义SpringBoot项目的启动Banner
``Banner``是``SpringBoot``框架一个特色的部分,其设计的目的无非就是一个框架的标识,其中包含了版本号、框架名称等内容,既然``SpringBoot``为我们提供了这个模块,它肯定也是可以更换的这也是``Spring``开源框架的设计理念。
|
Java 容器
SpringBoot的启动配置原理
介绍SpringBoot的启动配置原理