[英]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 容器中。 以下是分步操作方法列表:
packaging
改成war
(說到 maven 的pom.xml
)SpringBootServletInitializer
繼承主要的spring-boot
應用程序類並覆蓋SpringApplicationBuilder configure(SpringApplicationBuilder)
方法(參見javadoc )spring-boot-starter-tomcat
的scope
設置為provided
當我在本地免費部署 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.