您的位置:首页 > 编程语言 > Java开发

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

2015-02-02 18:14 555 查看

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内容

<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起来很方便。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: