Maven打包沒有指定主類問題(xxx.jar中沒有主清單屬性)
Maven打包沒有指定主類
在使用IDEA開發(fā)項目的時候經(jīng)常會遇到使用Maven打包項目(打成jar包或者zip包),但是之前不太清楚打包插件的使用,有時候會遇到在啟動jar包的時候沒有指定主類的錯誤(dd-1.0-SNAPSHOT.jar中沒有主清單屬性)。今天學習一下插件使用,寫一個針對該問題的教程。
軟件環(huán)境
- IDEA:2017.1.5
- Maven:3.3.9
打xxx.jar包(不包含依賴的jar包)
Maven可以不添加插件默認打jar包,但是如果想要修改默認的參數(shù)需要重新引入插件添加需要修改信息。
? 1. 修改pom.xml
<plugin> ? ? <groupId>org.apache.maven.plugins</groupId> ? ? <artifactId>maven-jar-plugin</artifactId> ? ? <version>3.1.0</version> ? ? <configuration> ? ? ? ? <archive> ? ? ? ? ? ? <manifest> ? ? ? ? ? ? ? ? <mainClass>demo.LoadDataMR</mainClass> ? ? ? ? ? ? </manifest> ? ? ? ? </archive> ? ? </configuration> </plugin>
2.使用Maven工具打包
找到IDEA右邊的【Maven Projects】->【項目名稱】->【Lifecycle】
- a. 先雙擊【clean】查看控制臺(Run)是否出現(xiàn)BUILD SUCCESS
- b. 然后雙擊【package】查看控制臺(Run)是否出現(xiàn)BUILD SUCCESS
- c. 在IDEA左邊查看【Project】界面會出現(xiàn)【target】文件夾,打開文件夾會出現(xiàn)xxx.jar包說明已經(jīng)構建完成。
- ?d. 打開xxx.jar文件,在【META-INF/MANIFEST.MF】文件里面存在Main-Class: demo.LoadDataMR
打xxx-jar-with-dependencies.jar包
1. 修改pom.xml文件
<plugin> ? ? <artifactId>maven-assembly-plugin</artifactId> ? ? <configuration> ? ? ? ? <archive> ? ? ? ? ? ? <manifest> ? ? ? ? ? ? ? ? <mainClass>demo.LoadDataMR</mainClass> ? ? ? ? ? ? </manifest> ? ? ? ? </archive> ? ? ? ? <descriptorRefs> ? ? ? ? ? ? <descriptorRef>jar-with-dependencies</descriptorRef> ? ? ? ? </descriptorRefs> ? ? </configuration> ? ? <!--下面是為了使用 mvn package命令,如果不加則使用mvn assembly--> ? ? <executions> ? ? ? ? <execution> ? ? ? ? ? ? <id>make-assemble</id> ? ? ? ? ? ? <phase>package</phase> ? ? ? ? ? ? <goals> ? ? ? ? ? ? ? ? <goal>single</goal> ? ? ? ? ? ? </goals> ? ? ? ? </execution> ? ? </executions> </plugin>
2.使用Maven工具打包
找到IDEA右邊的【Maven Projects】->【項目名稱】->【Lifecycle】
- a. 先雙擊【clean】查看控制臺(Run)是否出現(xiàn)BUILD SUCCESS
- b. 然后雙擊【package】查看控制臺(Run)是否出現(xiàn)BUILD SUCCESS
- c. 在IDEA左邊查看【Project】界面會出現(xiàn)【target】文件夾,打開文件夾會出現(xiàn)xxx.jar包說明已經(jīng)構建完成。
- d. 打開xxx-jar-with-dependencies.jar文件,在【META-INF/MANIFEST.MF】文件里面存在Main-Class: demo.LoadDataMR
寫在后面?
Maven插件配置的信息只能針對其生成的文件,在maven-jar-plugin插件設置的信息只會出現(xiàn)在xxx.jar包中,在maven-assembly-plugin插件設置的信息只會出現(xiàn)在xxx-jar-with-dependencies.jar包中
處理maven打包中沒有主類啟動的情況
第一步:在pom文件中添加
<!--解決maven打包問題--> ? <plugin> ? ? <groupId>org.apache.maven.plugins</groupId> ? ? <artifactId>maven-shade-plugin</artifactId> ? ? <version>2.3</version> ? ? <executions> ? ? ? ? <execution> ? ? ? ? ? ? <phase>package</phase> ? ? ? ? ? ? <goals> ? ? ? ? ? ? ? ? <goal>shade</goal> ? ? ? ? ? ? </goals> ? ? ? ? ? ? <configuration> ? ? ? ? ? ? ? ? <transformers> ? ? ? ? ? ? ? ? ? ? <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> ? ? ? ? ? ? ? ? ? ? ? ? <manifestEntries> ? ? ? ? ? ? ? ? ? ? ? ? ? ? <Main-Class> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? com.xxx.XXApplication ? ? ? ? ? ? ? ? ? ? ? ? ? ? </Main-Class> ? ? ? ? ? ? ? ? ? ? ? ? </manifestEntries> ? ? ? ? ? ? ? ? ? ? </transformer> ? ? ? ? ? ? ? ? ? ? <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> ? ? ? ? ? ? ? ? ? ? ? ? <resource>META-INF/spring.handlers</resource> ? ? ? ? ? ? ? ? ? ? </transformer> ? ? ? ? ? ? ? ? ? ? <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> ? ? ? ? ? ? ? ? ? ? ? ? <resource>META-INF/spring.schemas</resource> ? ? ? ? ? ? ? ? ? ? </transformer> ? ? ? ? ? ? ? ? </transformers> ? ? ? ? ? ? </configuration> ? ? ? ? </execution> ? ? </executions> </plugin>
第二步 mvn:clean
第三步 mvn:package
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Windows7下的Java運行環(huán)境搭建過程圖解
這篇文章主要介紹了Windows7下的Java運行環(huán)境搭建過程圖解,需要的朋友可以參考下2014-04-04Maven?繼承父工程時的relativePath標簽詳細解析
這篇文章主要介紹了Maven?繼承父工程時的relativePath標簽解析,通過本文學習你需要注意子模塊想要用父模塊pom中的版本,請注意配置relativePath屬性,需要的朋友可以參考下2022-12-12使用stream的Collectors.toMap()方法常見的問題及解決
這篇文章主要介紹了使用stream的Collectors.toMap()方法常見的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03java數(shù)組算法例題代碼詳解(冒泡排序,選擇排序,找最大值、最小值,添加、刪除元素等)
這篇文章主要介紹了java數(shù)組算法例題代碼詳解(冒泡排序,選擇排序,找最大值、最小值,添加、刪除元素等),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05Java代理模式實例詳解【靜態(tài)代理與動態(tài)代理】
這篇文章主要介紹了Java代理模式,結合實例形式詳細分析了java靜態(tài)代理與動態(tài)代理模式相關概念、原理、操作技巧與注意事項,需要的朋友可以參考下2019-09-09Java的web開發(fā)中SSH框架的協(xié)作處理應用筆記
這篇文章主要介紹了Java的web開發(fā)中SSH框架的協(xié)作處理應用筆記,SSH是指Struts和Spring以及Hibernate的框架搭配,需要的朋友可以參考下2015-12-12spring中使用@Autowired注解無法注入的情況及解決
這篇文章主要介紹了spring中使用@Autowired注解無法注入的情況及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09