将应用程序打包为jar并使用嵌入式HTTP服务器的最大优势之一是它可以像任何其他应用程序一样运行。这些支持网络的应用程序。调试SpringBoot应用程序也很容易;不需要特殊的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=-jartarget/myproject-0.0.1-SNAPSHOT.jar将启动一个全新的JVM.您需要确保在命令行中包含所需的一切,例如类路径元素、应用程序参数、JVM选项等。运行mvnspring-boot:run时,将启动Maven构建,它将:运行测试编译生命周期目标,默认为MavenResources和Compiler插件的resources:resources,compiler:compile,resources:testResources,compiler:testCompile目标.使用一系列参数启动应用程序,这些参数取决于项目中定义的SpringBootMaven插件配置(pom.xml、父项和设置、命令行等)。其中包括:一些类路径元素:target/classes文件夹,其中可能包含应用程序所需的资源和库、Maven依赖项等。是否forkJVM(是否创建一个全新的JVM来运行应用程序或重用Maven构建的JVM),请参阅插件的fork和代理参数。如果您观察到此行为:/src/main/resources/META-INF/resources/WEB-INF/中有一个带有jsp页面的springboot应用程序。如果你使用mvnspring-boot:run这些页面可以被服务,但是如果你使用java-jar,这些页面将不会被应用程序发现。要使用java-jar命令获得类似的结果,您必须在类路径中包含您的资源,例如javar-jarmyapp.jar-cp$CLASSPATH;/path/to/my/project/target/classes/
