真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用Maven生成能直接運行的jar包

小編給大家分享一下如何使用Maven生成能直接運行的jar包,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

為建陽等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及建陽網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站建設、成都網(wǎng)站設計、建陽網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

Maven可以使用mvn package指令對項目進行打包,如果使用Java -jar xxx.jar執(zhí)行運行jar文件,會出現(xiàn)"no main manifest attribute, in xxx.jar"(沒有設置Main-Class)、ClassNotFoundException(找不到依賴包)等錯誤。

要想jar包能直接通過java -jar xxx.jar運行,需要滿足:

1、在jar包中的META-INF/MANIFEST.MF中指定Main-Class,這樣才能確定程序的入口在哪里;

2、要能加載到依賴包。

使用Maven有以下幾種方法可以生成能直接運行的jar包,可以根據(jù)需要選擇一種合適的方法。

方法一:使用maven-jar-plugin和maven-dependency-plugin插件打包

在pom.xml中配置:

[html] view plain copy

  1.   

  2.       

  3.   

  4.           

  5.             org.apache.maven.plugins  

  6.             maven-jar-plugin  

  7.             2.6  

  8.               

  9.                   

  10.                       

  11.                         true  

  12.                         lib/  

  13.                         com.xxg.Main  

  14.                       

  15.                   

  16.               

  17.           

  18.           

  19.             org.apache.maven.plugins  

  20.             maven-dependency-plugin  

  21.             2.10  

  22.               

  23.                   

  24.                     copy-dependencies  

  25.                     package  

  26.                       

  27.                         copy-dependencies  

  28.                       

  29.                       

  30.                         ${project.build.directory}/lib  

  31.                       

  32.                   

  33.               

  34.           

  35.   

  36.       

  37.   


 

maven-jar-plugin用于生成META-INF/MANIFEST.MF文件的部分內容,com.xxg.Main指定MANIFEST.MF中的Main-Class,true會在MANIFEST.MF加上Class-Path項并配置依賴包,lib/指定依賴包所在目錄。

例如下面是一個通過maven-jar-plugin插件生成的MANIFEST.MF文件片段:

[plain] view plain copy

  1. Class-Path: lib/commons-logging-1.2.jar lib/commons-io-2.4.jar  

  2. Main-Class: com.xxg.Main  

只是生成MANIFEST.MF文件還不夠,maven-dependency-plugin插件用于將依賴包拷貝到${project.build.directory}/lib指定的位置,即lib目錄下。

配置完成后,通過mvn package指令打包,會在target目錄下生成jar包,并將依賴包拷貝到target/lib目錄下,目錄結構如下:

如何使用Maven生成能直接運行的jar包

指定了Main-Class,有了依賴包,那么就可以直接通過java -jar xxx.jar運行jar包。

這種方式生成jar包有個缺點,就是生成的jar包太多不便于管理,下面兩種方式只生成一個jar文件,包含項目本身的代碼、資源以及所有的依賴包。

方法二:使用maven-assembly-plugin插件打包

在pom.xml中配置:

[html] view plain copy

  1.   

  2.       

  3.   

  4.           

  5.             org.apache.maven.plugins  

  6.             maven-assembly-plugin  

  7.             2.5.5  

  8.               

  9.                   

  10.                       

  11.                         com.xxg.Main  

  12.                       

  13.                   

  14.                   

  15.                     jar-with-dependencies  

  16.                   

  17.               

  18.           

  19.   

  20.       

  21.   

打包方式:

[plain] view plain copy

  1. mvn package assembly:single  

打包后會在target目錄下生成一個xxx-jar-with-dependencies.jar文件,這個文件不但包含了自己項目中的代碼和資源,還包含了所有依賴包的內容。所以可以直接通過java -jar來運行。

此外還可以直接通過mvn package來打包,無需assembly:single,不過需要加上一些配置:

[html] view plain copy

  1.   

  2.       

  3.   

  4.           

  5.             org.apache.maven.plugins  

  6.             maven-assembly-plugin  

  7.             2.5.5  

  8.               

  9.                   

  10.                       

  11.                         com.xxg.Main  

  12.                       

  13.                   

  14.                   

  15.                     jar-with-dependencies  

  16.                   

  17.               

  18.               

  19.                   

  20.                     make-assembly  

  21.                     package  

  22.                       

  23.                         single  

  24.                       

  25.                   

  26.               

  27.           

  28.   

  29.       

  30.   


其中package、single即表示在執(zhí)行package打包時,執(zhí)行assembly:single,所以可以直接使用mvn package打包。

不過,如果項目中用到spring Framework,用這種方式打出來的包運行時會出錯,使用下面的方法三可以處理。

方法三:使用maven-shade-plugin插件打包

在pom.xml中配置:

[html] view plain copy

  1.   

  2.       

  3.   

  4.           

  5.             org.apache.maven.plugins  

  6.             maven-shade-plugin  

  7.             2.4.1  

  8.               

  9.                   

  10.                     package  

  11.                       

  12.                         shade  

  13.                       

  14.                       

  15.                           

  16.                               

  17.                                 com.xxg.Main  

  18.                               

  19.                           

  20.                       

  21.                   

  22.               

  23.           

  24.   

  25.       

  26.   


配置完成后,執(zhí)行mvn package即可打包。在target目錄下會生成兩個jar包,注意不是original-xxx.jar文件,而是另外一個。和maven-assembly-plugin一樣,生成的jar文件包含了所有依賴,所以可以直接運行。

如果項目中用到了Spring Framework,將依賴打到一個jar包中,運行時會出現(xiàn)讀取XML schema文件出錯。原因是Spring Framework的多個jar包中包含相同的文件spring.handlers和spring.schemas,如果生成一個jar包會互相覆蓋。為了避免互相影響,可以使用AppendingTransformer來對文件內容追加合并:

[html] view plain copy

  1.   

  2.       

  3.   

  4.           

  5.             org.apache.maven.plugins  

  6.             maven-shade-plugin  

  7.             2.4.1  

  8.               

  9.                   

  10.                     package  

  11.                       

  12.                         shade  

  13.                       

  14.                       

  15.                           

  16.                               

  17.                                 com.xxg.Main  

  18.                               

  19.                               

  20.                                 META-INF/spring.handlers  

  21.                               

  22.                               

  23.                                 META-INF/spring.schemas  

  24.                               

  25.                           

  26.                       

  27.                   

  28.               

  29.           

  30.   

  31.       

  32.   

以上是“如何使用Maven生成能直接運行的jar包”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享文章:如何使用Maven生成能直接運行的jar包
網(wǎng)站鏈接:http://weahome.cn/article/jseppe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部