Spring Boot 中 jar 和 war 的区别?
Differences between jar and war in Spring Boot?
我即将在 Java 中使用 Spring 框架使用 Spring Boot 构建我的第一个网站,在 jar
中构建它要容易得多,但我有几个问题。
大体上有什么区别?
在 jar
文件中,视图在 /resources/templates
下,但在 war
文件中,它在 /webapp/WEB-INF/
.
下
有什么区别?我可以在在线主机上部署 jar
吗?
Spring Boot 可以被告知生成一个 'fat JAR',其中包括所有 module/service 的依赖项,并且可以是 运行 和 java -jar <your jar>
. See "Create an executable JAR with Maven" here。
Spring 引导也可以被告知 produce a WAR file,在这种情况下,您可能会选择将其部署到 Web 容器,例如 Tomcat 或 Jetty。
关于 Spring 引导部署的更多详细信息 here。
取决于您的部署。如果您计划将应用程序部署到现有的 Java EE 应用程序服务器(例如 Tomcat),那么标准方法是执行 war
构建。
当您使用 fat jar 方法时,您的应用程序将部署在 spring boot 提供的嵌入式应用程序容器中。进行 Deploying Spring Boot Applications 了解更多信息。
运行spring-boot
申请为胖子*.jar
可以使用嵌入式应用程序容器(Tomcat
作为默认选项)构建所谓的 fat JAR
可执行 *.jar
文件。
有 spring-boot
用于各种构建系统的插件。这是 maven
的那个:spring-boot-maven-plugin
要执行那种 fat
*.jar
你可以简单的 运行 命令:
java -jar *.jar
或使用spring-boot-maven
目标:
mvn spring-boot:run
构建 spring-boot
应用程序作为 *.war
存档
另一种选择是将您的应用程序作为老式 war
文件发送。它可以部署到任何 servlet 容器。这是一步一步的操作方法列表:
- 将
packaging
改为war
(说maven的pom.xml
)
- 从
SpringBootServletInitializer
继承主 spring-boot
应用程序 class 并覆盖 SpringApplicationBuilder configure(SpringApplicationBuilder)
方法(参见 javadoc)
- 确保将
spring-boot-starter-tomcat
的 scope
设置为 provided
当我在本地免费部署我的 jar 问题时,我遇到了同样的问题。然后我不得不在服务器上演示它。您可以通过更改 pom.xml 标签
创建一个 war 文件
<packaging>jar</packaging>
至
<packaging>war</packaging>
并且您的目标中将有一个 war 文件,您可以将其部署到您的服务器(tomcat 在我的例子中)
如果您需要将它部署到外部容器中,您通常必须创建一个 war 文件(不一定是可执行文件)。
如果您想使用嵌入式容器,您可以选择创建可执行的.jar 文件或可执行的.war 文件。据我所知,唯一的区别在于存档的布局,因此通常也是源存储库的布局。
例如使用 Maven / Gradle 的标准文件夹结构,.jar 的静态资源需要在 src/main/resources/static
中,而对于 .war 文件,它们应该在 src/main/webapp
中。
war
文件是一个 Web 应用程序归档文件,它在应用程序服务器内运行,而 .jar
是 Java在用户计算机上运行桌面应用程序的应用程序存档。 war 文件是一种特殊的 jar 文件,用于打包 Web 应用程序,以便于将其部署到应用程序服务器上。
简单易懂的答案。
打包类型 jar
表示为独立应用程序,打包类型 war
表示为 Web 应用程序。
我即将在 Java 中使用 Spring 框架使用 Spring Boot 构建我的第一个网站,在 jar
中构建它要容易得多,但我有几个问题。
大体上有什么区别?
在 jar
文件中,视图在 /resources/templates
下,但在 war
文件中,它在 /webapp/WEB-INF/
.
有什么区别?我可以在在线主机上部署 jar
吗?
Spring Boot 可以被告知生成一个 'fat JAR',其中包括所有 module/service 的依赖项,并且可以是 运行 和 java -jar <your jar>
. See "Create an executable JAR with Maven" here。
Spring 引导也可以被告知 produce a WAR file,在这种情况下,您可能会选择将其部署到 Web 容器,例如 Tomcat 或 Jetty。
关于 Spring 引导部署的更多详细信息 here。
取决于您的部署。如果您计划将应用程序部署到现有的 Java EE 应用程序服务器(例如 Tomcat),那么标准方法是执行 war
构建。
当您使用 fat jar 方法时,您的应用程序将部署在 spring boot 提供的嵌入式应用程序容器中。进行 Deploying Spring Boot Applications 了解更多信息。
运行spring-boot
申请为胖子*.jar
可以使用嵌入式应用程序容器(Tomcat
作为默认选项)构建所谓的 fat JAR
可执行 *.jar
文件。
有 spring-boot
用于各种构建系统的插件。这是 maven
的那个:spring-boot-maven-plugin
要执行那种 fat
*.jar
你可以简单的 运行 命令:
java -jar *.jar
或使用spring-boot-maven
目标:
mvn spring-boot:run
构建 spring-boot
应用程序作为 *.war
存档
另一种选择是将您的应用程序作为老式 war
文件发送。它可以部署到任何 servlet 容器。这是一步一步的操作方法列表:
- 将
packaging
改为war
(说maven的pom.xml
) - 从
SpringBootServletInitializer
继承主spring-boot
应用程序 class 并覆盖SpringApplicationBuilder configure(SpringApplicationBuilder)
方法(参见 javadoc) - 确保将
spring-boot-starter-tomcat
的scope
设置为provided
当我在本地免费部署我的 jar 问题时,我遇到了同样的问题。然后我不得不在服务器上演示它。您可以通过更改 pom.xml 标签
创建一个 war 文件<packaging>jar</packaging>
至
<packaging>war</packaging>
并且您的目标中将有一个 war 文件,您可以将其部署到您的服务器(tomcat 在我的例子中)
如果您需要将它部署到外部容器中,您通常必须创建一个 war 文件(不一定是可执行文件)。
如果您想使用嵌入式容器,您可以选择创建可执行的.jar 文件或可执行的.war 文件。据我所知,唯一的区别在于存档的布局,因此通常也是源存储库的布局。
例如使用 Maven / Gradle 的标准文件夹结构,.jar 的静态资源需要在 src/main/resources/static
中,而对于 .war 文件,它们应该在 src/main/webapp
中。
war
文件是一个 Web 应用程序归档文件,它在应用程序服务器内运行,而 .jar
是 Java在用户计算机上运行桌面应用程序的应用程序存档。 war 文件是一种特殊的 jar 文件,用于打包 Web 应用程序,以便于将其部署到应用程序服务器上。
简单易懂的答案。
打包类型 jar
表示为独立应用程序,打包类型 war
表示为 Web 应用程序。