1. 程式人生 > >把Maven專案連同其依賴jar包一同打成jar包,並執行入口類

把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>

2.2.4、如下是assembly的目錄:


2.2.5、帶配置完成後,執行打包命令即可。