许多项目需要在linux环境下去解压war包与jar包去替换内容,war包可以使用zip这些工具,jar包需要jdk中的jar支持。
如何打/解包
配置好jdk环境变量后。
jar命令格式
jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名…
{ctxu},这四个参数必须选选其一。
[v f m e 0 M i],这几个是可选参数,文件名也是必须的。
参数 | 说明 |
---|---|
-c | 创建一个jar包 |
-t | 显示jar中的内容列表 |
-x | 解压jar包 |
-u | 添加文件到jar包中 |
-f | 指定jar包的文件名 |
-v | 输出详细报告 |
-m | 指定MANIFEST.MF文件 |
-0 | 生成jar包时不压缩内容 |
-M | 不生成清单文件MANIFEST.MF |
-i | 为指定的jar文件创建索引文件 |
-C | 可在相应的目录下执行命令 |
关于MANIFEST.MF定义:
https://baike.baidu.com/item/MANIFEST.MF
演示
往jar包添加文件
jar uf xxx.jar BOOT-INF/classes/application.yml
解压jar包
jar -xvf xxx.jar
打jar包,不生成清单文件,不压缩
jar -cvfM0 xxx.jar BOOT-INF/ META-INF/ org/
很多项目都是springboot形式,打jar包后java -jar会显示No main manifest attribute.
这是找不到jar包在启动时无法找到指定启动类,需要在打包时指定manifast文件。
在打包是加入参数 -m指定已有的manifast文件
jar -cvfm0 xxx.jar ./META_INF/MANIFAST.MF ./
jar包命令 创建一个jar包 输出详细命令 指定jar包文件名 指定manifast文件 打包目录(文件夹下全部命令)
这样
java -jar就能启动了。
找一个MANIFAST.MF看一下。
这样子的有jar包版本,启动信息,启动类等等