目录
了解
jar程序
被归档的文件
清单文件MANIFEST.MF
了解
java提供了程序代码的快捷归档分发的方式,使用java归档工具对项目代码打包生成拓展名为jar的压缩文件,使用到了%JAVA_HOME%\bin\jar程序。
打包前,先编译程序代码为class文件,回顾javac
jar程序
jar 参数 参数值 被包含的文件
比如,最简单的打包命令 jar cf MyJAR.jar * 将会把当前目录下的所有文件打包到名为MyJAR.jar的文件中去。
常用参数如下
c 表示创建一个新的jar文件
u 表示要更新jar
f 程序将在命令行输出执行结果
e 向manifest.mf文件添加条目
M 默认不创建manifest.mf清单文件
m 读取另外提供的清单条目文件
t 列出jar文件内容
x 解压文件
0 不使用压缩,只是文件打包。不带该参数默认会压缩class
C 打包时忽略层级
指出参数后,参数值需要与参数的顺序对应
上面提到的最简单打包命令中,cf 与参数值 MyJAR.jar 顺序对应,其他以此类推。
被归档的文件
如果需要明确哪些文件需要添加到jar中,可以使用相对路径指出资源
jar cf MyJAR.jar .\Domain.class .\Service.class
被添加的文件之间使用空格分隔。如果是想包含一整个文件夹,可以使用通配符 *
jar cf MyJar.jar resource\*
如果需要将某个目录下的文件直接放到jar的根目录下,忽略掉这些文件所在的包层级,指出C参数
jar cf Myjar.jar -C resource smile.png
这样,smile.png打包之后,文件直接在jar的根目录
清单文件MANIFEST.MF简述
这是一个描述jar特征的特殊文件,文件中定义的条目是一个个key:value键值对,部分条目会影响jar的使用方式。如果希望jar是一个可被执行的程序,通常使用java -jar jar-file命令调用,则需要在清单文件中指定Main-Class条目,指出程序的启动类。
比如我的程序启动类全限定类名是com.demo.Boot,则需添加Main-Class: com.demo.Boot
这样执行java -jar Boot.jar 就会执行main方法运行程序
如果是希望当类库,则该条目可选。
默认会创建一个清单文件,包含最简单的信息,创建jar时可以指出使用自己准备好的文件。
使用文件保存条目信息好过从命令中指出,可以重复使用。
到此,可以创建简单的jar文件,作为类库使用的话,检查类的访问控制,经过测试可以发给他人使用了。
有了Maven等构建工具后,打包操作会有些不同。