咱们有时要开发一个Java Application,就是main来直接运行的那种,虽然有好多工具能够帮助咱们打为jar。
但会有如下两个问题:java
第一种是须要lib目录依赖一块儿来运行。(须要依赖文件,一个jar不能够运行)
第二种就是是把其它依赖的jar解开和你的类放在一个jar中。(框架的限制,包依赖之间的冲突,解压替换内容的过程产生类与资源的混乱)apache
第一种的问题显而易见须要copy太多东西(lib/*.jar)太麻烦。
第二种虽然能够作到一个jar运行的效果,但由于是解开再合再一块儿,尤为是jar中类有冲突时将和你在ide中不解开执行的效果不同。(如eclipse能够运行,打包出来就不能够运行)框架
这个工具很好的解决了这一点,它至关于作一了一个启动壳。能够不改变你的jar与依赖的jar包,也不用解开。
简单理解就是jar中有jar。运行能够达到ide或配类路径运行同样的效果。eclipse
One-JAR有maven下的插件onejar-maven-plugin,因此对于maven的jar工程来讲打包很方便。
pom.xml只须要加入如下plugin内容maven
<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你们比较熟悉,主要的加启动类。ide
onejar-maven-plugin是咱们的主角。有了它,你再运行mvn package时,就会多生成一个xxxxxx.one-jar.jar文件。工具
这个文件直接能够java -jar xxxxxx.one-jar.jar来单独运行。
并且就这一个jar。不须要其它依赖。copy起来很方便。ui