Linux命令之jar命令使用示例
一、jar命令簡介
jar命令是Java開發(fā)中常用的命令行工具,用于創(chuàng)建、查看和操作Java歸檔文件(也稱為JAR文件)。一般情況下我們很少直接使用此命令創(chuàng)建jar包,都是內(nèi)嵌在開發(fā)工具中。主要使用場景如下:
- 1、開發(fā)環(huán)境jar包或者war包部署到測試環(huán)境;
- 2、某演示系統(tǒng)war程序復(fù)制部署到客戶環(huán)境,給客戶提供試用;
- 3、通用前置機(jī)jar包程序部署到不同客戶環(huán)境,只需要修改客戶購買的賬戶及數(shù)據(jù)庫連接信息即可。
這些情況下開發(fā)人員將系統(tǒng)打包成jar包或者war包,我們只需要部署前根據(jù)實(shí)際環(huán)境修改配置文件相關(guān)參數(shù),然后啟動(dòng)程序即可完成系統(tǒng)部署。這個(gè)時(shí)候我們就可以使用jar命令解壓軟件包,如果是war包部署的WEB程序,實(shí)際上解壓完成后修改參數(shù)啟動(dòng)即可;如果是jar包程序則需要重新打包后運(yùn)行。
二、jar命令使用示例
1、解壓war包
解壓后我們就可以進(jìn)入配置文件目錄編輯或者替換配置文件。
(base) [wuhs@s142 webapps]$ jar xvf test.war…(base) [wuhs@s142 webapps]$ lltotal 52244drwxrwxr-x. 7 wuhs wuhs 84 May 6 13:39 htmldrwxrwxr-x. 3 wuhs wuhs 38 May 6 16:21 META-INF-rw-r–r–. 1 wuhs wuhs 53497846 May 6 14:08 test.wardrwxrwxr-x. 4 wuhs wuhs 47 May 6 13:39 WEB-INF(base) [wuhs@s142 webapps]$ vim WEB-INF/classes/config.properties
2、解壓jar包
解壓jar包和war包方式是一樣的。
(base) [wuhs@s142 test]$ jar xvf test.jar…(base) [wuhs@s142 test]$ lltotal 132drwxrwxr-x. 3 wuhs wuhs 23 Jul 30 2020 comdrwxrwxr-x. 3 wuhs wuhs 38 Aug 3 2020 META-INF-rw-r–r–. 1 wuhs wuhs 134472 May 6 16:23 test.jar
3、創(chuàng)建jar包
(base) [wuhs@s142 test]$ tar -cvf test1.jar com META-INF/…(base) [wuhs@s142 test]$ lltotal 264drwxrwxr-x. 3 wuhs wuhs 23 Jul 30 2020 comdrwxrwxr-x. 3 wuhs wuhs 38 May 6 16:28 META-INF-rw-rw-r–. 1 wuhs wuhs 135165 May 6 16:28 test1.jar-rw-r–r–. 1 wuhs wuhs 134472 May 6 16:23 test.jar
4、查看jar包文件列表
(base) [wuhs@s142 test]$ jar -tvf abcd.jar
#查看jar包內(nèi)容,如果文件較多我們可以結(jié)合grep命令過濾(base) [wuhs@s142 webapps]$ jar tvf test.war |grep config.properties3802 Sat May 06 09:31:20 CST 2023 WEB-INF/classes/config.properties
5、更新文件到j(luò)ar包
使用u參數(shù)可以將文件更新到j(luò)ar包中,文件增加到了jar包根目錄下。
(base) [wuhs@s142 test]$ jar -uvf test.jar config_uat.propertiesadding: config_uat.properties(in = 3802) (out= 1073)(deflated 71%)
6、創(chuàng)建帶MANIFEST.MF文件的jar包
使用m參數(shù)創(chuàng)建帶MANIFEST.MF文件的jar包,要求MANIFEST.MF該文件存在,生成jar包的時(shí)候會(huì)自動(dòng)創(chuàng)建META-INF目錄,并將該MANIFEST.MF文件放置到該目錄下。
(base) [wuhs@s142 test]$ jar -cvfm abcd.jar MANIFEST.MF com…(base) [wuhs@s142 test]$ jar -xvf abcd.jarcreated: META-INF/inflated: META-INF/MANIFEST.MF…
7、不創(chuàng)建MANIFEST.MF文件的jar包
默認(rèn)是自動(dòng)創(chuàng)建MANIFEST.MF文件,如果不需要?jiǎng)?chuàng)建則使用-M參數(shù),如果使用-m參數(shù)指定MANIFEST.MF文件則需要提前創(chuàng)建好該文件,通過MANIFEST.MF文件可以對jar包進(jìn)行一些設(shè)置。
(base) [wuhs@s142 test]$ jar -cvfM abcd.jar com
8、切換到指定目錄執(zhí)行jar命令
注意-C dir后面的點(diǎn)哦。
(base) [wuhs@s142 test]$ jar -cvf abcd.jar -C abc/ .
三、jar命令使用語法及參數(shù)說明
1、使用語法
#jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files …#jar 參數(shù) jar包名稱 文件或目錄
2、參數(shù)說明
參數(shù) | 參數(shù)說明 |
---|---|
-c | 創(chuàng)建新的存檔 |
-t | 存檔目錄列表 |
-x | 從存檔中提取命名(或所有)文件 |
-u | 更新現(xiàn)有存檔 |
-v | 在標(biāo)準(zhǔn)輸出上生成詳細(xì)輸出 |
-f | 指定存檔文件名 |
-m | 包括指定清單文件中的清單信息 |
-n | 在創(chuàng)建新存檔后執(zhí)行Pack200規(guī)范化 |
-e | 為綁定到可執(zhí)行jar文件中的獨(dú)立應(yīng)用程序指定應(yīng)用程序入口點(diǎn) |
-0 | 不使用ZIP壓縮 |
-P | 保留文件名中的前導(dǎo)’/'(絕對路徑)和“…”(父目錄)組件 |
-M | 不為條目創(chuàng)建清單文件 |
-i | 為指定的jar文件生成索引信息 |
-C | 更改到指定的目錄并包含以下文件 |
四、War包和Jar包區(qū)別
War包和Jar包都是Java開發(fā)中的歸檔文件,但它們有一些區(qū)別:
- 用途不同:War包主要用于Web應(yīng)用程序的部署,而Jar包則用于Java應(yīng)用程序的打包和部署。
- 包含內(nèi)容不同:War包通常包含Web應(yīng)用程序的所有文件,包括JSP、HTML、CSS、JavaScript、Servlet、JavaBean等,而Jar包則包含Java類、資源文件和庫文件等。
- 目錄結(jié)構(gòu)不同:War包通常包含WEB-INF目錄和META-INF目錄,其中WEB-INF目錄包含web.xml、classes目錄和lib目錄,META-INF目錄包含MANIFEST.MF文件;而Jar包則通常只包含META-INF目錄和Java類文件。
- 部署方式不同:War包一般需要部署到Web服務(wù)器中,例如Tomcat、WebLogic等,而Jar包可以作為Java應(yīng)用程序的獨(dú)立運(yùn)行文件,也可以作為庫文件被其他Java應(yīng)用程序調(diào)用。
總的來說,War包和Jar包有不同的用途和適用場景,開發(fā)人員需要根據(jù)實(shí)際情況選擇適合的歸檔文件類型。
到此這篇關(guān)于Linux命令之jar命令的文章就介紹到這了,更多相關(guān)Linux jar命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ubuntu 解決libsqlite3-0依賴的問題(推薦)
下面小編就為大家?guī)硪黄猽buntu 解決libsqlite3-0依賴的問題(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05Linux IO的水平觸發(fā)和邊緣觸發(fā)的區(qū)別
這篇文章主要介紹了Linux IO的水平觸發(fā)和邊緣觸發(fā)的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-05-05使用Systemctl列出Linux中所有服務(wù)的操作步驟
在 Linux 系統(tǒng)中,Systemctl 是一個(gè)強(qiáng)大的工具,用于管理系統(tǒng)的服務(wù)和守護(hù)進(jìn)程,它可以讓用戶輕松地啟動(dòng)、停止、重啟以及管理各種系統(tǒng)服務(wù),本文將詳細(xì)介紹如何使用 Systemctl 來列出 Linux 中的所有服務(wù),需要的朋友可以參考下2024-05-05