我只想知道我使用以下命令启动spring boot应用程序之间有什么区别:
mvn spring-boot:run
和
java -jar target/the-packaged-file.war (Or in IDE, right click and run java application)
好问题。
我们希望在mvn spring- boot:runIDE和运行您的应用之间没有区别。两者都使用项目的类路径启动主类。强烈建议您在使用应用程序时使用后者:如果从IDE运行应用程序,则将获得所有不错的功能,例如调试和devtools。当您需要在命令行上运行应用程序的标准方法时,可以使用前者。Maven插件还可以在集成测试阶段之前启动您的应用程序(请参阅startMaven / Gradle插件的目标)。如果使用该构建来过滤某些资源,则IDE应该注意,否则从IDE启动应用程序时,可能不会过滤某些数据。
mvn spring- boot:run
start
java -jar yourapp.jar在最终工件上运行。Spring Boot负责构建应用程序的类路径。过滤的资源存储在jar中。但最后,它的意思是做完全相同的事情。
java -jar yourapp.jar
现在您的问题已经解决war了。您不能期望常规war回调适用于作为主类运行的对象。话虽如此,Spring Boot尽其所能为您提供所有工具以使其保持一致。war从运行中的servlet容器启动的A 不会从main方法初始化,而是从servlet初始化程序初始化。但是,您可以共享初始化代码,以便保持一致。插件的运行目标将添加,src/main/webapp以便这些文件也被提供。
war
src/main/webapp
TL; DR如果您要在所有环境中寻找一致的故事,请不要使用战争包装。