簡體   English   中英

Spring Boot中jar和war的區別?

[英]Differences between jar and war in Spring Boot?

我即將使用 Spring Boot 使用 Spring 框架在 Java 中構建我的第一個網站,在jar構建它要容易得多,但我對此有一些疑問。

一般有什么區別?

jar文件中,視圖位於/resources/templates ,但在war文件中,它位於/webapp/WEB-INF/

有什么區別? 我可以在在線主機上部署jar嗎?

可以告訴 Spring Boot 生成一個“fat JAR”,其中包含所有模塊/服務的依賴項,並且可以使用java -jar <your jar> 請參閱此處的“使用 Maven 創建可執行 JAR”。

還可以告訴 Spring Boot 生成 WAR 文件,在這種情況下,您可能會選擇將其部署到 Web 容器,例如 Tomcat 或 Jetty。

有關 Spring Boot 部署的更多詳細信息,請訪問此處

取決於您的部署。 如果您計划將應用程序部署到現有的 Java EE 應用程序服務器(例如 Tomcat),那么標准方法是執行war構建。

當您使用 fat jar 方法時,您的應用程序將部署在 Spring Boot 提供的嵌入式應用程序容器上。 執行部署 Spring Boot 應用程序以獲取更多信息。

spring-boot應用程序作為 fat *.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 容器中。 以下是分步操作方法列表:

  1. packaging改成war (說到 maven 的pom.xml
  2. SpringBootServletInitializer繼承主要的spring-boot應用程序類並覆蓋SpringApplicationBuilder configure(SpringApplicationBuilder)方法(參見javadoc
  3. 確保將spring-boot-starter-tomcatscope設置為provided

spring-boot 文檔中的更多信息

當我在本地免費部署 jar 問題時,我遇到了同樣的問題。 然后我不得不在服務器上演示它。 您可以通過更改 pom.xml 標簽來創建一個 war 文件

<packaging>jar</packaging>

<packaging>war</packaging>

並且您的目標中將有一個戰爭文件,您可以將其部署到您的服務器(在我的情況下為 tomcat)

如果您需要將其部署在外部容器中,您通常必須創建一個 war 文件(它不必是可執行的)。

如果要使用嵌入式容器,可以選擇創建可執行的.jar 文件或可執行的.war 文件。 AFAIK 唯一的區別在於存檔的布局,因此通常也是源存儲庫的布局。

例如,在 Maven/Gradle 中使用標准文件夾結構,.jar 的靜態資源需要在src/main/resources/static而對於 .war 文件,它們應該在src/main/webapp

war文件是在應用程序服務器內運行的Web 應用程序存檔,而.jar是在用戶計算機上運行桌面應用程序的Java 應用程序存檔 war 文件是一種特殊的 jar 文件,用於打包 Web 應用程序,以便輕松地將其部署到應用程序服務器上。

簡單易行的答案。 打包類型jar表示為獨立應用程序,打包類型war表示為 Web 應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM