在使用Jenkins进行远程部署时,需要先把Java文件打成jar包的形式。
例子
①创建jar包
jar cf ggf10service.jar *
将当前目录下的所以文件打包生成ggf10service.jar,如果ggf10service.jar存在,则覆盖
②创建并显示打包过程
jar cvf ggf10service.jar *
将当前目录下的所以文件打包生成ggf10service.jar,并显示打印过程。有则覆盖。
③显示jar包
jar tvf ggjob-service.jar 查看ggjob-service.jar包的内容
指定的jar包必须真实存在,否则会发生FileNoutFoundException。
④解压jar包
jar xvf ggjob-service.jar
为了不影响公司项目的目录结构,我先创建一个yutao
文件夹。mkdir yutao
我们再执行:
[root@master01 ggjob-service-test]# cd yutao
[root@master01 yutao]# jar -xf ../ggjob-service.jar
[root@master01 yutao]# ll
total 8
drwxr-xr-x 5 root root 4096 Dec 14 10:27 ggjob
drwxr-xr-x 2 root root 4096 Dec 14 12:11 META-INF
注意:解压是不会创建目录ggjob-service
的。
⑤jar中添加文件
jar uf hello.jar HelloWorld.java
将HelloWorld.java添加到hello.jar包中,有则,覆盖原文件。
⑥创建不压缩内容jar包(未实践)
jar cvf0 hello.jar *.class
利用当前目录中所有的.class文件生成一个不压缩jar包
⑦创建带manifest.mf文件的jar包
这个也叫打包成可运行的jar包
要打包成可运行的jar包,有两种方法:
①先手动创建一个`MANIFEST.MF`文件,并在其中指定主类。
②使用jar的-e参数指定可运行jar包的入口点(即main类的完全名称).
1、手动创建MANIFEST.MF文件
①首先
vim MANIFEST.MF
写入以下信息
Manifest-Version: 1.0
Created-By: 1.7.0_51 (Oracle Corporation)
Main-Class: ggjob.scheduler.EngineSandbox
说明:
第一行指定清单的版本,若无,则JDK默认生成:Manifest-Version: 1.0
第二行指明创建的作者,若无,则JDK默认生成Created-By: 1.6.0_22(Sun Microsystems Inc.)
第三行指定主类所在类路径,
第四行指明程序运行的主类
②使用jar命令进行打包同时把MANIFEST.MF
文件加进去:
jar cvfm ggjob-service.jar manifest.mf *
2、使用jar命令进行打包
jar -cvfe ggjob-service.jar ggjob.scheduler.EngineSandbox *
⑧忽略manifest.mf文件
jar cvfM hello.jar hello
生成的jar包中不包括META-INF目录及manifest.mf文件
⑨加-C应用
jar cvfm hello.jar mymanifest.mf -C hello/
表示在切换到hello目录下然后再执行jar命令
(10)-i为jar文件生成索引列表(未实践)
当一个jar包中的内容很好的时候,你可以给它生成一个索引文件,这样看起来很省事。
jar i hello.jar
执行完这条命令后,它会在hello.jar包的META-INF文件夹下生成一个名为INDEX.LIST的索引文件,它会生成一个列表,最上边为jar包名。
(11)导出解压列表(未实践)
jar tvf hello.jar >hello.txt 如果你想查看解压一个jar的详细过程,而这个jar包又很大,屏幕信息会一闪而过,这时你可以把列表输出到一个文件中,慢慢欣赏!
(12)jar -cvf hello.jar hello/*
例如原目录结构如下:
hello
|—com
|—org
你本想只把com目录和org目录打包,而这时jar命令会连同hello目洋也一块打包进。这点大家要注意。jar命令生成的压缩文件会包含它后边出的目录。我们应该进入到hello目录再执行jar命令。
注意:manifest.mf这个文件名,用户可以任指定,但jar命令只认识Manifest.mf,它会对用户指定的文件名进行相应在的转换,这不需用户担心。
jar命令参数:
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文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
-i 为指定的jar文件创建索引文件
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
参考地址
http://www.jb51.net/article/53601.htm
http://rsljdkt.iteye.com/blog/1044188