idea 打包jar 提示沒有主方法清單


maven生命周期都是抽象的,實際的操作由插件去完成。

package生命周期實際是由 maven-jar-plugin去完成;

  1.  
    spring-boot-maven-plugin該插件是專門服務於springboot的maven項目,旨在把springboot項目打包成可運行的jar或war。
  2.  
    需要搭配以下幾個goal使用,否則和maven本身的一些插件沒什么差別

可用的目標功能有:

run  repackage  start stop build-info

以打包jar為例,如果我們沒有搭配使用上述的goal,則會默認使用maven本身的插件去完成任務

在沒有用<parent></parent>標簽做聲明的情況下

使用下面的構建插件配置

雙擊package

打包流程:

[INFO] Scanning for projects...   
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Building com-oo 1.0-SNAPSHOT         
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ com-oo ---    //復制主資源文件到主輸出目錄
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 5 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ com-oo ---   編譯主代碼到主輸出目錄
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ com-oo ---  //復制測試資源文件到測試資源目錄
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\project\comoo\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ com-oo ---  //復制測試代碼到測試目錄
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ com-oo ---  //執行測試用例
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ com-oo ---   //創建項目jar
[INFO] Building jar: D:\project\comoo\target\com-oo-1.0-SNAPSHOT.jar 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.636 s
[INFO] Finished at: 2018-12-21T14:08:57+08:00
[INFO] Final Memory: 15M/221M
[INFO] ------------------------------------------------------------------------

 

最后打包出來的jar無法用java -jar 啟動起來,會出現:

***.jar沒有主清單屬性

解決辦法有:

1.在pom文件用<parent>標簽聲明springboot starter parent 包括版本號。則goal會默認為repackage

2.添加repackage功能到插件中,即在你點擊package之后打包成的jar之后再將這個jar重新打包成可運行的jar

將原先的jar包改成.original為后綴的文件。

兩個文件差別在於多個一個BOOT-INF目錄以及META-INF/MANIFEST.MF的文件有所不同。

MANIFEST.MF文件不同在於多了一下幾行:

Start-Class: org.myy.drips.WebApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Version: 1.5.7.RELEASE
Main-Class: org.springframework.boot.loader.JarLauncher

根據兩個方式之一重新打包字后,日志窗口比原先多了幾行

[INFO] 

[INFO] --- spring-boot-maven-plugin:1.5.7.RELEASE:repackage (default) @ com-oo ---  //重新打包jar項目為新的可運行的jar,並將原先的jar的后綴名改為.original


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM