maven生成可以直接執行的jar(包括依賴和mainclass)
轉:http://blog.csdn.NET/xiao__gui/article/details/47341385
Maven可以使用mvn package指令對專案進行打包,如果使用Java -jar xxx.jar執行執行jar檔案,會出現"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包,可以根據需要選擇一種合適的方法。
方法一:使用maven-jar-plugin和maven-dependency-plugin外掛打包
在pom.xml中配置:
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
-
<artifactId>
- <version>2.6</version>
- <configuration>
- <archive>
- <manifest>
- <addClasspath>true</addClasspath>
-
<classpathPrefix
- <mainClass>com.xxg.Main</mainClass>
- </manifest>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <version>2.10</version>
- <executions>
- <execution>
- <id>copy-dependencies</id>
- <phase>package</phase>
- <goals>
- <goal>copy-dependencies</goal>
- </goals>
- <configuration>
- <outputDirectory>${project.build.directory}/lib</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
maven-jar-plugin用於生成META-INF/MANIFEST.MF檔案的部分內容,<mainClass>com.xxg.Main</mainClass>指定MANIFEST.MF中的Main-Class,<addClasspath>true</addClasspath>會在MANIFEST.MF加上Class-Path項並配置依賴包,<classpathPrefix>lib/</classpathPrefix>指定依賴包所在目錄。
例如下面是一個通過maven-jar-plugin外掛生成的MANIFEST.MF檔案片段:
- Class-Path: lib/commons-logging-1.2.jar lib/commons-io-2.4.jar
- Main-Class: com.xxg.Main
只是生成MANIFEST.MF檔案還不夠,maven-dependency-plugin外掛用於將依賴包拷貝到<outputDirectory>${project.build.directory}/lib</outputDirectory>指定的位置,即lib目錄下。
配置完成後,通過mvn package指令打包,會在target目錄下生成jar包,並將依賴包拷貝到target/lib目錄下,目錄結構如下:
指定了Main-Class,有了依賴包,那麼就可以直接通過java -jar xxx.jar執行jar包。
這種方式生成jar包有個缺點,就是生成的jar包太多不便於管理,下面兩種方式只生成一個jar檔案,包含專案本身的程式碼、資源以及所有的依賴包方法二:使用maven-assembly-plugin外掛打包
在pom.xml中配置:
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.5.5</version>
- <configuration>
- <archive>
- <manifest>
- <mainClass>com.xxg.Main</mainClass>
- </manifest>
- </archive>
- <descriptorRefs>
- <descriptorRef>jar-with-dependencies</descriptorRef>
- </descriptorRefs>
- </configuration>
- </plugin>
- </plugins>
- </build>
打包方式:
- mvn package assembly:single
打包後會在target目錄下生成一個xxx-jar-with-dependencies.jar檔案,這個檔案不但包含了自己專案中的程式碼和資源,還包含了所有依賴包的內容。所以可以直接通過java -jar來執行。
此外還可以直接通過mvn package來打包,無需assembly:single,不過需要加上一些配置:- <build>
- <plugins>
- <plugin>
-
相關推薦
maven生成可以直接執行的jar(包括依賴和mainclass)
轉:http://blog.csdn.NET/xiao__gui/article/details/47341385 Maven可以使用mvn package指令對專案進行打包,如果使用Java -jar xxx.jar執行執行jar檔案,會出現"no
IDEA maven 打可執行jar包 包括依賴jar檔案和所有配置檔案資原始檔
目標 1. 將依賴第三方jar包都打進去 2. 將工程java 目錄下所有資料夾和配置檔案,包括資原始檔都打入jar包,根據目錄來 3. 打出jar檔案可直接執行 方法:採用 maven-assembly-plugin 環境:IDEA 14.1.5 JD
maven打可執行jar包及依賴jar包(二)
maven打可執行jar包,包含依賴jar包(分環境) 這篇文章打包介紹跟上一篇文章http://blog.csdn.net/u012204058/article/details/52514821
maven 生成可執行jar並使用shell指令碼執行
建立maven專案,利用maven專案生成可執行jar,需要使用maven-assembly-plugin外掛來完成,pom.xml檔案配置如下 <?xml version="1.0" encoding="UTF-8"?> <projec
在IDEA中用Maven生成可執行jar包
將Spring Boot專案打包 使用 IDEA 按兩次shift進入IDEA的查詢功能,查詢並開啟Maven Projects 點開Lifecycle,雙擊package即完成打包 可在/
maven打可執行jar包及依賴jar包
maven打可執行jar包,包含依賴jar包 maven安裝本地jar包到倉庫: mvn install:install-file -DgroupId=com.alipay -DartifactId
【Java】itext根據模板生成pdf(包括圖片和表格)
金額 res report als fields positions 創建模板 bst open() 1、導入需要的jar包:itext-asian-5.2.0.jar itextpdf-5.5.11.jar。 2、新建word文檔,創建模板,將文件另存為pdf,並用Ado
Maven打包可執行jar 分離配置檔案和lib
類: classloader 產生的resourceAsStream只能載入classpath下的配置檔案,如果想載入其他目錄的檔案需要使用file的形式,maven專案src/main/resources/對應classpath,這個路徑下的檔案不打包,所以不能使用r
請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。
題目描述 請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 /* 思路:需要滿足一下規則(正則表
請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e",&quo
package com.java.jie; public class test2 { public static void main(String [] args) { } public boolean isNumeric(char[] str) {
與數字相關轉換(包括英文和漢語拼音)
數字到英文描述的轉換 1.給定一個整數,列印該整數的對應的英文描述,例如輸入1234,輸出“One Thousand,Two Hundred Thirty Four” 解題思路: 例如在轉換19323984時,我們可以考慮分段處理,每三位轉換一次,
1.5程式設計基礎之迴圈控制 9. 描述 計算非負整數 m 到 n(包括m 和 n )之間的所有奇數的和
描述計算非負整數m到n(包括m和n)之間的所有奇數的和,其中,m不大於n,且n不大於300.例如m = 3,n = 12,其和則為:3+ 5 + 7 + 9 + 11 = 35。輸入兩個數m和n,兩個數
Java對map進行排序(包括按鍵和值)
package com.xin.demo; import java.util.ArrayList; import java.util.Collections; import java.util.C
正則判斷一個字串是否為數字(包括整數和小數)
判斷一個字串是否為數字(包括整數和小數)public class IsNumber { public static boolean isNumeric(String str) {
微信公眾號開發 同時回覆使用者多條資訊(包括圖片和文字)
相信對於大多數的微信公眾號開發的初學者來說,由於微信提供的文件過於簡潔,所以這無疑是對我們的巨大考驗。 但是,苦心人,天不負。在強烈的“我能行”這一自我暗示下,經過在各大網站上的查詢、電子書籍類的讀閱,經過無數次的嘗試,終於能夠實現一次事件同時回覆使用者多條資訊的功能了。額
小技巧——整個頁面變為純黑白顯示(包括圖片和文字)
####廢話不多說,首先大家要知道有filter這麼一個css屬性 1、如果是單張圖片或單段文字變黑白的話只需在對應元素的css樣式中加如下程式碼即可: img,div{ -webkit-fil
SpringMVC預設首頁設定(包括靜態和動態)
在SpringMVC中一些坑,我就分享一下正確的設定和自己掉的坑 配置靜態頁面預設首頁。 這個相對比較簡單,但是還是需要注意一些東西 web.xml裡面填寫如下 <welcome-file-list> <welcome-file&g
【劍指Offer-字串】請實現一個函式用來判斷字串是否表示數值(包括整數和小數)
題目 請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示數值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。 輸
利用MAVEN打包可執行jar包,包括依賴的第三方包
看下專案pom.xml的配置,首先要配置maven-jar-plugin,把自己的程式碼編譯打包成jar檔案,然後配置maven-assembly-plugin,把整個專案打包成一個釋出包。 Xml程式碼 收藏程式碼 <build> <pl
maven專案依賴本地jar包時編譯生成可執行jar包方法
maven專案需要本地jar包時,在根目錄新建lib目錄,將jar包拷貝到lib目錄並且新增到build path此時直接打可執行jar包會出現編譯報錯、啟動時缺少jar包等問題解決方案: 1.增加編譯外掛, 解決Failed to execute goal org.a