把Maven專案連同其依賴jar包一同打成jar包,並執行入口類
需求:
在我本地的電腦上存在一個maven工程,在pom檔案中依賴了一些第三方jar包。現在需要把工程打成jar包,然後放到linux伺服器中執行。
因此i,現在就需要在打jar包的同時既要指定執行該jar包的入口類,又要連同第三方jar包一塊打成jar包。
目錄:
1.jar包和war包的區別;
2.package命令打jar包的兩種方式:
2.1.jar-plugin和dependency-plugin配置
2.2.jar-plugin、assembly-plugin以及assembly所需的配置檔案
一、jar包和war包的區別
1.1、jar包
當電腦沒有tomcat等web容器,只配置了java環境,支援java的doc命令時(就是cmd黑視窗中的命令),可以使用命令:java -jar jar包名稱 來執行jar包。當然,此時執行的jar包中必須有一個main方法,並且生成jar包的時候,把這個main方法所在的類作為了入口類
1.2、war包
當電腦上有tomcat等web容器時,可以把工程打成war包,然後將war包放入tomcat伺服器中,tomcat將會自動解析war包,並執行。
1.3區別
如果仔細看上面的介紹的話,你會發現:
執行jar包——執行的就是普通的java工程(是通過main方法來執行的);
執行war包——執行的是web工程,不需要指定入口類。
二、通過package命令打jar包
maven是支援將當前工程打成jar包的,只不過需要在pom檔案中加入一些配置,確切的來說,應該是一些maven自帶並支援的一些外掛(個人這麼理解)。
2.1.jar-plugin和dependency-plugin配置
通過jar-plugin和dependency-plugin,使用package命令或者是mvn:install命令,會把當前工程打成jar包,同時相關的第三方依賴會被放入一個lib包中。<注意,需要把工程的打包方式改成jar>
需要有兩處配置:
2.1.1、將工程打成jar包(如下程式碼可以直接複製使用,但是注意入口類的指向需要更改)
2.1.2、將工程需要的第三方依賴包抽出來,放在lib資料夾下(如下程式碼可以直接複製使用)
完整下過如下:
2.1.3、pom檔案配置完成後,執行Run as —— maven build.. ,點開後,輸入package命令
2.1.4、執行成功後,會在target目錄下生成一個jar包和一個lib資料夾
2.1.5、將lib資料夾和jar包一起放在linux伺服器上,注意二者需要在同一目錄下
2.1.6、執行jar包
在linux系統中切換路徑到lib資料夾和jar包所在資料夾,然後執行:java -jar ls-msao-raiscom-0.0.1-SNAPSHOT.jar 敲起enter 執行完成
2.1.7、注意
生成的jar包名稱是你maven工程的artifactId+version,所以不用糾結名稱
2.2.jar-plugin、assembly-plugin以及assembly所需的配置檔案(推薦)
通過jar-plugin、assembly-plugin可以將專案jar包打成壓縮包的方式,比如zip,tar等方式,但是需要多新增一個assembly的配置檔案,在這個檔案中指定將jar包打成什麼樣型別的壓縮包。
壓縮包解壓後,會生成專案打成的jar包,lib依賴檔案,以及assembly的配置檔案。
話不多說,上程式碼:
2.2.1、jar-plugin:將工程打成jar包,需要指定jar包的入口類
2.2.2、assembly-plugin:打包依賴jar包
2.2.3、assembly的配置檔案
<directory>${project.basedir}\resources</directory>