一、用途
jar命令用来“创建,更新,解压,查看”JAR格式文件。
备注:
JAR格式文件:基于ZIP格式而又异于ZIP格式(会额外创建“META-INF”目录,“META-INF”目录下会额外创建“MANIFEST.MF”文件和其他一些文件或者子目录)。
二、常用用法
2.1、创建JAR格式文件
1、创建普通JAR格式文件
1 | jar cvf JAR格式文件名称 -C 待加入JAR格式文件内容文件所在目录A . |
“c”:表示创建JAR格式文件的动作。
“v”:打印详细日志信息。
“f”:表示以“JAR格式文件名称”参数值作为创建后JAR格式文件名称。
“-C 待加入JAR格式文件内容文件所在目录A .”:创建时,首先切换进入目录A,再把目录A下内容文件加入到JAR格式文件。如此曲线救国的主要原因是,jar cvf JAR格式文件名称 A
和jar cvf JAR格式文件名称 A/*
都会在JAR格式文件中创建A目录。
2、创建可执行JAR格式文件
1 | jar cvfe JAR格式文件名称 入口类 -C 待加入JAR格式文件内容文件所在目录A . |
“c”:表示创建JAR格式文件的动作。
“v”:打印详细日志信息。
“f”:表示以“JAR格式文件名称”参数值作为创建后JAR格式文件名称。
“e”:表示以“入口类”参数值作为创建后可执行JAR格式文件的执行入口类。
“-C 待加入JAR格式文件内容文件所在目录A .”:创建时,首先切换进入目录A,再把目录A下内容文件加入到JAR格式文件。如此曲线救国的主要原因是,jar cvf JAR格式文件名称 A
和jar cvf JAR格式文件名称 A/*
都会在JAR格式文件中创建A目录。
2.2、解压JAR格式文件
1 | jar xvf JAR格式文件名称 |
“x”:表示解压JAR格式文件的动作。
“v”:打印详细日志信息。
“f”:表示以“JAR格式文件名称”参数值作为待解压JAR格式文件的名称。
三、其他
3.1、保存内容文件的修改时间
创建JAR格式文件时,内容文件的修改时间也会被保存。因此,相同Java源代码文件,不同时间执行mvn package
命令得到的JAR格式文件内容不一致(虽然解压后的内容文件内容一致,但是修改时间不一致)。
3.2、META-INF/MANIFEST.MF文件
JAR格式文件中的“META-INF/MANIFEST.MF”文件保存有一些元信息,比如入口类是通过“Main-Class: 入口类名称”属性值对保存的。
参考文献: [1]man jar [2]https://stackoverflow.com/questions/650897/why-do-these-two-jar-files-with-identical-contents-have-different-file-sizes [3]https://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html