问题 Spring Boot中jar和war之间的区别?


我将使用Spring Boot使用Spring Framework构建我的第一个Java网站,并且构建它更容易 jar,但我有几个问题。

一般有什么不同?

jar 视图所在的文件 /resources/templates, 但在 war 归档它 /webapp/WEB-INF/

有什么区别?我可以部署一个 jar 在线主持人?


1493
2017-07-18 11:24


起源



答案:


可以告诉Spring Boot生成一个“胖JAR”,其中包含所有模块/服务的依赖项,并且可以运行 java -jar <your jar>。请参阅“使用Maven创建可执行JAR” 这里

也可以告诉Spring Boot 生成一个WAR文件在这种情况下,您可能会选择将其部署到Web容器(如Tomcat或Jetty)。

有关Spring Boot部署的更多详细信息 这里


4
2017-07-18 11:30



并且不要忘记在这种情况下排除嵌入式tomcat;检查@ lazyneuron的答案中的链接 - P.J.Meisch
做完了,谢谢.. - glytching
谢谢你的队友@glitch - Hama Saadwn
@HamaSaadwn只是fyi,spring-boot应用程序构建为 war 也可以作为 java -jar xxx.war。当您在迁移到部署基础架构时进行更改时,可以在某些过渡阶段使用它 fat jar - rilaby
@rila谢谢兄弟 - Hama Saadwn


答案:


可以告诉Spring Boot生成一个“胖JAR”,其中包含所有模块/服务的依赖项,并且可以运行 java -jar <your jar>。请参阅“使用Maven创建可执行JAR” 这里

也可以告诉Spring Boot 生成一个WAR文件在这种情况下,您可能会选择将其部署到Web容器(如Tomcat或Jetty)。

有关Spring Boot部署的更多详细信息 这里


4
2017-07-18 11:30



并且不要忘记在这种情况下排除嵌入式tomcat;检查@ lazyneuron的答案中的链接 - P.J.Meisch
做完了,谢谢.. - glytching
谢谢你的队友@glitch - Hama Saadwn
@HamaSaadwn只是fyi,spring-boot应用程序构建为 war 也可以作为 java -jar xxx.war。当您在迁移到部署基础架构时进行更改时,可以在某些过渡阶段使用它 fat jar - rilaby
@rila谢谢兄弟 - Hama Saadwn


运行 spring-boot 应用为脂肪 *.jar

有可能建立所谓的 fat JAR 这是可执行的 *.jar 嵌入式应用程序容器的文件Tomcat 作为默认选项)。 有 spring-boot 用于各种构建系统的插件。这是一个 maven弹簧引导Maven的插件

执行那种 fat  *.jar 你可以简单的运行命令:

java -jar *.jar

或使用 spring-boot-maven 目标:

mvn spring-boot:run

建造 spring-boot 申请 *.war 档案

另一种选择是将您的应用程序以旧式方式发送 war 文件。它可以部署到那里的任何servlet容器。这是一步一步的方法列表:

  1. 更改 packaging 至 war (谈论maven的 pom.xml
  2. 继承主要 spring-boot 应用程序类来自 SpringBootServletInitializer 和覆盖 SpringApplicationBuilder configure(SpringApplicationBuilder) 方法(见 的javadoc
  3. 一定要设置 scope 的 spring-boot-starter-tomcat 如 provided

有关spring-boot文档的更多信息


5
2017-07-18 12:49



做同样的步骤适用于gradle? - Hama Saadwn
@HamaSaadwn绝对! - rilaby
谢谢你兄弟@rila - Hama Saadwn
谢谢,但是在胖jar的情况下,我们如何配置tomcat?例如配置ssl? - ashkanr
@ashkanr在这里查看spring-boot属性列表 docs.spring.io/spring-boot/docs/current/reference/html/...。基本上,属性是配置嵌入式Tomcat实例的常用方法。 - rilaby


取决于您的部署。如果您计划将应用程序部署到现有Java EE Application Server(例如Tomcat),那么标准方法是执行a war 建立。

当您使用胖jar方法时,您的应用程序将部署在spring boot提供的嵌入式应用程序容器中。进行 部署Spring Boot应用程序 了解更多信息。


3
2017-07-18 11:31



谢谢兄弟@lazyneuron - Hama Saadwn