idea打包jar的多種方式

idea打包jar的多種方式

這里總結(jié)出用IDEA打包jar包的多種方式侣姆,以后的項目打包Jar包可以參考如下形式:

1. 用IDEA自帶的打包形式

2. 用Maven插件maven-shade-plugin打包

3. 用Maven插件maven-assembly-plugin打包

用IDEA自帶的打包方式:

打開IDEA的file -> Project Structure,進入項目配置頁面沉噩。如下圖:

image

點擊Artifacts捺宗,進入Artifacts配置頁面,點擊 + 川蒙,選擇如下圖的選項蚜厉。

image

進入Create JAR from Modules頁面,按照如下圖配置畜眨。

image
  1. 第一步選擇Main函數(shù)執(zhí)行的類昼牛。
  2. 第二步選擇如圖的選項术瓮,目的是對第三方Jar包打包時做額外的配置,如果不做額外的配置可不選這個選項(但不保證打包成功)
  3. 第三步需要在src/main目錄下贰健,新建一個resources目錄胞四,將MANIFEST.MF文件保存在這里面,因為如果用默認缺省值的話伶椿,在IDEA12版本下會有bug辜伟。

點擊OK之后,出現(xiàn)如下圖界面脊另,右鍵點擊<output root>导狡,點擊Create Directory,創(chuàng)建一個libs,將所有的第三方JAR放進libs目錄下偎痛。

image

成功之后旱捧,如下圖所示:

image

放入之后,點擊我們要打成的jar的名字踩麦,這里面是kafka-cps.jar,選擇classpath進行配置枚赡。

image

編輯的結(jié)果如下:

image

這里將所有的jar都寫在libs/里面。點擊OK谓谦,回到配置頁面贫橙。
同時還注意在配置頁面,勾選build on make

image

最后點擊配置頁面的OK茁计,完成配置料皇。回到IDEA,點擊Build->Build Artifacts星压,選擇build

image

就會生成我們需要的jar包践剂。其位置在項目目錄的out目錄下/out/artifacts/kafka_cps_jar
下面放一個正確配置的清單文件內(nèi)容

image

用maven-shade-plugin打包

上面的打包過程實在是過于的繁瑣娜膘,而且也沒有利用到maven管理項目的特色逊脯。為此,我們這里利用maven中的maven-shade-plugin插件竣贪。在pom.xml中军洼,我們加入如下的信息來加入插件。

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.4</version>
                <configuration>
                    <createDependencyReducedPom>true</createDependencyReducedPom>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>Main.Main</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

這里面配置了一個`configuration`標簽內(nèi)容演怎,在此標簽下面 有一個transformer標簽匕争,用來配置Main函數(shù)的入口( <mainClass>Main.Main</mainClass>),當然此標簽內(nèi)容很復(fù)雜爷耀,不是上面寫的那么簡單甘桑,上面之所以如此簡單,是因為在所有類中(包括第三方Jar)只有一個Main方法。如果第三方j(luò)ar中有Main方法跑杭,就要進行額外的配置铆帽,上面這么配置,不一定能執(zhí)行成功德谅。

具體可以參見maven插件爹橱。

在加入這段代碼到pom.xml之后,我們就可以用maven的命令去打包了窄做。其指令如下:

mvn clean compile //清除之前target編譯文件并重新編譯
mvn clean package //對項目進行打包(因為配置過插件愧驱,所以jar包是可執(zhí)行的)
mvn clean install //安裝項目,然后就可以使用了

然后通過java -jar cps-1.0-SNAPSHOT.jar運行浸策。

如果使用IDEA的話冯键,可以通過自帶的maven管理工具代替執(zhí)行上面的命令惹盼。如下圖所示庸汗,依次點擊藍色的部分。

image

用maven-assembly-plugin打包

上面的方法手报,我們還需要點擊很多命令去打包蚯舱。這次利用一個新的插件,可以打包更簡單掩蛤。同樣枉昏,在pom.xml中加入如下代碼。上文的maven-shade-plugin插件代碼可以刪除揍鸟。最好不要寫2個插件代碼兄裂。

 <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>Main.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

這里同樣配置了一個manifest標簽來配置Main函數(shù)的入口。然后通過如下指令來實現(xiàn)打包阳藻。

mvn assembly:assembly

如果使用IDEA的話晰奖,可以通過自帶的maven管理工具代替執(zhí)行上面的命令。如下圖所示腥泥,點擊藍色的部分匾南。

image

然后通過執(zhí)行java -jar cps-1.0-SNAPSHOT-jar-with-dependencies.jar運行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛔外,一起剝皮案震驚了整個濱河市蛆楞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌夹厌,老刑警劉巖豹爹,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異矛纹,居然都是意外死亡臂聋,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逻住,“玉大人钟哥,你說我怎么就攤上這事∠狗茫” “怎么了腻贰?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扒秸。 經(jīng)常有香客問我播演,道長,這世上最難降的妖魔是什么伴奥? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任写烤,我火速辦了婚禮,結(jié)果婚禮上拾徙,老公的妹妹穿的比我還像新娘洲炊。我一直安慰自己,他們只是感情好尼啡,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布暂衡。 她就那樣靜靜地躺著,像睡著了一般崖瞭。 火紅的嫁衣襯著肌膚如雪狂巢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天书聚,我揣著相機與錄音唧领,去河邊找鬼。 笑死雌续,一個胖子當著我的面吹牛斩个,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播西雀,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼萨驶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了艇肴?” 一聲冷哼從身側(cè)響起腔呜,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎再悼,沒想到半個月后核畴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡冲九,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年谤草,在試婚紗的時候發(fā)現(xiàn)自己被綠了害晦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怒允。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出政冻,到底是詐尸還是另有隱情门烂,我是刑警寧澤宙枷,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布钙畔,位于F島的核電站,受9級特大地震影響仗岖,放射性物質(zhì)發(fā)生泄漏逃延。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一轧拄、第九天 我趴在偏房一處隱蔽的房頂上張望揽祥。 院中可真熱鬧,春花似錦檩电、人聲如沸拄丰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愈案。三九已至挺尾,卻和暖如春鹅搪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背遭铺。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工丽柿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人魂挂。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓甫题,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涂召。 傳聞我的和親對象是個殘疾皇子坠非,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 這里總結(jié)出用IDEA打包jar包的多種方式,以后的項目打包Jar包可以參考如下形式: 用IDEA自帶的打包形式 用...
    wvqusrtg閱讀 3,988評論 0 1
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理果正,服務(wù)發(fā)現(xiàn)炎码,斷路器,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • Maven編譯代碼的相關(guān)命令 第一秋泳、main目錄下的主代碼編寫完畢后潦闲,使用Maven進行編譯,在項目根目錄下運行命...
    加油小杜閱讀 1,169評論 0 2
  • 1.編寫POM Maven項目的核心文件是pom.xml迫皱,POM(Project Objcet Model)項目對...
    zlcook閱讀 5,893評論 7 26