天天看點

用maven将swing項目打成可執行jar包(含依賴)

本文介紹通過maven将項目打成可執行jar包的方法。

本文需要讀者具備maven基礎知識,了解maven的一般配置、插件配置,了解maven的phase、goal的概念,了解dependency和manifest的作用。

先決條件:

(本文所述方法适用于項目的特點)

1、項目必須是maven項目;

3、項目中必須有一個主入口類,在使用者輕按兩下打包後的jar檔案時可以被執行。

打包:

第一種情況:獨立項目,且無第三方依賴包

這種情況下,我們需要maven的maven-jar-plugin插件來幫我們打包。請在項目pom.xml中的plugin配置處加入如下内容:(注意看<!-- -->注釋部分)

<code>...</code>

<code>&lt;</code><code>plugin</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>artifactId</code><code>&gt;maven-jar-plugin&lt;/</code><code>artifactId</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>version</code><code>&gt;2.3.2&lt;/</code><code>version</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>configuration</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>archive</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>manifest</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>addClasspath</code><code>&gt;true&lt;/</code><code>addClasspath</code><code>&gt;</code>

<code>                </code><code>&lt;!-- 如果項目帶有3rd-party lib,這些依賴将被放入lib檔案夾 --&gt;</code>

<code>                </code><code>&lt;!-- 注意:這個檔案夾要随着jar檔案一起distribute,否則jar檔案運作時将報錯 --&gt;</code>

<code>                </code><code>&lt;</code><code>classpathPrefix</code><code>&gt;lib/&lt;/</code><code>classpathPrefix</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>mainClass</code><code>&gt;com.yourProjectPackage.YourEntranceClass&lt;/</code><code>mainClass</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>manifest</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>archive</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>configuration</code><code>&gt;</code>

<code>&lt;/</code><code>plugin</code><code>&gt;</code>

然後用mvn clean install來編譯安裝你的項目。指令執行結束後會生成一個jar檔案,一個lib檔案夾(如果你的項目引用了3rd-party dependencies的話)。輕按兩下jar檔案,就立刻看到效果了。有界面的項目應該能看到主界面(如果你程式沒錯的話),沒有界面的,應該可以從你機器的java console裡看到相關資訊,或者項目自身有log輸出或具有神奇的效果的,可以直接去檢視輸出結果。

第二種情況:項目+第三方依賴包

這種情況就無法使用maven-jar-plugin插件來打包了。我們要用另一個插件maven-assembly-plugin。這個插件可以幫助我們靈活的打包我們的項目(不僅打包jar項目,還可以用于ear、war等項目的打包,本文隻介紹如何打可執行jar包)。這裡,我們使用此插件将我們的source code編譯結果以及項目的dependencies打到一起,形成一個jar檔案。

下面就是項目的pom.xml中plugin的配置部分:

<code>    </code><code>&lt;</code><code>artifactId</code><code>&gt;maven-assembly-plugin&lt;/</code><code>artifactId</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>version</code><code>&gt;2.6&lt;/</code><code>version</code><code>&gt;</code>

<code>        </code><code>&lt;!-- 這個archive以及archive裡面的設定很重要,沒有這個配置,就無法生成可執行jar檔案 --&gt;</code>

<code>                </code><code>&lt;</code><code>mainClass</code><code>&gt;com.your.package.YourEntranceClass&lt;/</code><code>mainClass</code><code>&gt;</code>

<code>        </code><code>&lt;!-- 這個jar-with-dependencies是這個插件中預置的,不用管它,盡管用就好了 --&gt;</code>

<code>        </code><code>&lt;!-- 當然,你也可以用自己的descriptor。如何用?自己去查這個插件的文檔 --&gt;</code>

<code>        </code><code>&lt;</code><code>descriptorRefs</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>descriptorRef</code><code>&gt;jar-with-dependencies&lt;/</code><code>descriptorRef</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>descriptorRefs</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>executions</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>execution</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>id</code><code>&gt;make-assembly&lt;/</code><code>id</code><code>&gt;</code>

<code>            </code><code>&lt;!-- 這裡的phase和goals都是maven的基礎概念,不懂的可以去看maven的文檔 --&gt;</code>

<code>            </code><code>&lt;!-- 總之,當你install你的project的時候,是會涵蓋package phase和single goal的 --&gt;</code>

<code>            </code><code>&lt;</code><code>phase</code><code>&gt;package&lt;/</code><code>phase</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>goals</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>goal</code><code>&gt;single&lt;/</code><code>goal</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>goals</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>execution</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>executions</code><code>&gt;</code>

添加了此plugin之後,就可以clean install你的maven項目了。然後在maven指令執行結束後的console裡會找到類似以下内容:

--- maven-install-plugin:2.4:install (default-install) @ MvnCfgSwitcher --- Installing F:\uuuu\vvvv\Wwwww\target\Wwwww-1.0-SNAPSHOT.jar to Y:\mvn_repo\com\yourname\Wwwww\1.0-SNAPSHOT\Wwwww-1.0-SNAPSHOT.jar Installing F:\uuuu\vvvv\Wwwww\pom.xml to Y:\mvn_repo\com\yourname\Wwwww\1.0-SNAPSHOT\Wwwww-1.0-SNAPSHOT.pom Installing F:\uuuu\vvvv\Wwwww\target\Wwwww-1.0-SNAPSHOT-jar-with-dependencies.jar to Y:\mvn_repo\com\yourname\Wwwww\1.0-SNAPSHOT\Wwwww-1.0-SNAPSHOT-jar-with-dependencies.jar

其中藍色辨別部分就是生成的all-in-one的可執行jar檔案。

快輕按兩下打包結果試試看吧,親!

本文轉自 rickqin 51CTO部落格,原文連結:http://blog.51cto.com/rickqin/1714633