onejar-maven-plugin把java类与lib打包为一个可运行jar

1、问题背景

我们有时要开发一个Java Application,就是main来直接运行的那种,虽然有好多工具可以帮助我们打为jar。
但会有以下两个问题:

第一种是需要lib目录依赖一起来运行。(需要依赖文件,一个jar不可以运行)
第二种就是是把其它依赖的jar解开和你的类放在一个jar中。(框架的限制,包依赖之间的冲突,解压替换内容的过程产生类与资源的混乱)

第一种的问题显而易见需要copy太多东西(lib/*.jar)太麻烦。
第二种虽然可以做到一个jar运行的效果,但因为是解开再合再一起,尤其是jar中类有冲突时将和你在ide中不解开执行的效果不一样。(如eclipse可以运行,打包出来就不可以运行)

2、用One-JAR来解决

这个工具很好的解决了这一点,它相当于做一了一个启动壳。可以不改变你的jar与依赖的jar包,也不用解开。
简单理解就是jar中有jar。运行可以达到ide或配类路径运行一样的效果。

One-JAR有maven下的插件onejar-maven-plugin,所以对于maven的jar工程来说打包很方便。
pom.xml只需要加入以下plugin内容

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
< plugin >
     < groupId >org.apache.maven.plugins</ groupId >
     < artifactId >maven-jar-plugin</ artifactId >
     < configuration >
         < archive >
             < manifest >
                 < mainClass >org.noahx.onejartest.Launcher</ mainClass >
             </ manifest >
         </ archive >
     </ configuration >
</ plugin >
 
< plugin >
     < groupId >com.jolira</ groupId >
     < artifactId >onejar-maven-plugin</ artifactId >
     < version >1.4.4</ version >
     < executions >
         < execution >
             < configuration >
                 < attachToBuild >true</ attachToBuild >
                 < classifier >onejar</ classifier >
             </ configuration >
             < goals >
                 < goal >one-jar</ goal >
             </ goals >
         </ execution >
     </ executions >
</ plugin >

maven-jar-plugin大家比较熟悉,主要的加启动类。

onejar-maven-plugin是我们的主角。有了它,你再运行mvn package时,就会多生成一个xxxxxx.one-jar.jar文件。

这个文件直接可以java -jar xxxxxx.one-jar.jar来单独运行。
而且就这一个jar。不需要其它依赖。copy起来很方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值