咱們有時要開發一個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