在使用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

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐