花5分鐘過一遍jar包和war包的區別(概念,目錄,使用和部署),以後都不會再迷茫

Spring Boot 項目打包

做Java開發,jar包和war包接觸的都比較多。

今天,小編把兩者的聯繫好好梳理下,花5分鐘過一遍以後不再迷茫,你值得擁有:

一、概念

1. jar包:jar包是類的歸檔文件,與平臺無關的文件格式,它允許將許多文件組合成一個壓縮文件。JAR 文件格式以流行的 ZIP 文件格式爲基礎。但與 ZIP 文件不同的是,JAR 文件不僅用於壓縮和發佈,而且還用於部署和封裝庫、組件和插件程序,並可被像編譯器和 JVM 這樣的工具直接使用;

簡單來說,jar包就是別人已經寫好的一些類,然後對這些類進行打包。可以將這些jar包引入到你的項目中,可以直接使用這些jar包中的類和屬性,這些jar包一般放在BOOT-INF文件夾的lib目錄下。

2. war包:war包是JavaWeb程序打的包,war包裏面包括寫的代碼編譯成的class文件,依賴的包,配置文件,所有的網站頁面,包括html,jsp等等。一個war包可以理解爲是一個web項目,裏面是項目的所有東西。

簡單來說,war是一個可以直接運行的web模塊,通常用於網站,打成包部署到容器中。以Tomcat來講,將war包放置在其\webapps\目錄下,然後啓動Tomcat,這個包就會自動解壓,就相當於發佈了。

二、目錄結構

  1. jar包裏的com裏放的就是class文件,配置文件,但是沒有靜態資源的文件(index.jsp),大多數 JAR 文件包含一個 META-INF 目錄,它用於存儲包和擴展的配置數據,如安全性和版本信息;
  2. war包中的文件按照一定目錄結構來組織,和項目的文件結構保持一致。其根目錄下包含有html和jsp文件,或者包含有這兩種文件的目錄。(META-INF和jar包作用一樣)WEB-INF目錄下含有一個web.xml文件和一個classes目錄,web.xml是這個應用的配置文件,而classes目錄下則包含編譯好的servlet類和jsp,或者servlet所依賴的其他類(如JavaBean),通常這些所依賴的類也可以打包成jar包放在WEB-INF下的lib目錄下。

三、根本區別

WAR文件代表了一個Web應用程序,把WAR文件作爲部署單元來使用,而JAR是類的歸檔文件。

雖然WAR文件和JAR文件的文件格式是一樣的,並且都是使用jar命令來創建,但就其應用來說,WAR文件和JAR文件是有根本區別的。JAR文件的目的是把類和相關的資源封裝到壓縮的歸檔文件中,而對於WAR文件來說,一個WAR文件代表了一個Web應用程序,它可以包含 Servlet、HTML頁面、Java類、圖像文件,以及組成Web應用程序的其他資源,而不僅僅是類的歸檔文件。

四、使用場景

  1. 產品開發階段:因爲在此發階段經常需要添加或刪除Web應用程序的內容,更新 Servlet類文件,而每一次改動後,重新建立WAR文件將是一件浪費時間的事情,所以不適合使用WAR文件,使用JAR更便利;
  2. 產品發佈階段:因爲在這個時候,幾乎不需要再做什麼改動了,所以使用WAR文件是比較合適的。

五、部署項目

(篇幅原因,打包方法不介紹了,相關博客很多,大家可以自行百度)

  • 部署普通的Spring項目用“war”包就可以,下面展示war包部署在Tomcat中運行方法:
  1. 首先需要在虛擬機安裝一個Tomcat;
  2. 將編譯器打好的war包複製到Tomcat下的webapps的文件夾內;
  3. 在Tomcat的bin目錄下,運行 ./startup.bat ,啓動Tomcat,就相當於發佈了項目。
  • 部署SpringBoot項目用“jar”包就可以,因爲SpringBoot內置tomcat,下面展示jar包部署方法:(我的jar包名稱爲myjob.jar)
  1. 查看進程:ps -ef | grep myjob.jar;
  2. 殺死進程:kill -9 進程號;
  3. 移除舊的jar包,將新的jar包複製進目錄(通常放在/home目錄下);
  4. 啓動程序:nohup java -jar myjob.jar &;
  5. 實時查看日誌:tail -1000f nohup.out。

 

少俠請留步 ... ヾ(◍°∇°◍)ノ゙ ... 
歡迎點贊、評論、加關注,讓更多人看到學到賺到
更多精彩,請關注我的"今日頭條號":Java雲筆記

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章