寫這篇文件主要記錄JRA文件里面到底是什么?然后MANIFEST.MF又是什么?Springboot 如何只有Main方法就可以運行的?
Java開發中JRA包中經常會看到這個文件中。Springboot打包也會生成對應的JRA,下圖我們用maven命令直接編譯打包
執行mvn clean package -DskipTests=true -P test
,生成的文件如下
BOOT-INF
注意了這個是我們自己寫的代碼生成的class和配置文件 META-INF
包含了MANIFEST.MF
和 maven
文件夾
maven文件夾下面包含pom.xml
和pom.properites
文件 pom.xml
是代表的整個項目引用的第三方jar的maven坐標,如Spring 等 pom.properites
是當前執行 package 命令后打包當前項目的版本信息, 就如下面,是不是簡單明了呀。
#Generated by Apache Maven#Fri May 29 16:56:23 CST 2020version=1.0-SNAPSHOTgroupId=com.xxxartifactId=xxxxxService
接下來看打包文件中的MANIFEST.MF
Manifest-Version: 1.0Implementation-Title: xxxxServiceImplementation-Version: 1.0-SNAPSHOTArchiver-Version: Plexus ArchiverBuilt-By: tonyImplementation-Vendor-Id: com.xxSpring-Boot-Version: 1.5.10.RELEASEImplementation-Vendor: Pivotal Software, Inc.Main-Class: org.springframework.boot.loader.JarLauncherStart-Class: com.xxx.xxxxApplicationSpring-Boot-Classes: BOOT-INF/classes/Spring-Boot-Lib: BOOT-INF/lib/Created-By: Apache Maven 3.5.3Build-Jdk: 1.8.0_144Implementation-URL: http://projects.spring.io/spring-boot/xxxAdminService/
直接看上面的內容,遇到問題我們先挑選容易的來看。
1、 Manifest-Version 用來定義manifest文件的版本,例如:Manifest-Version: 1.0
2、Built-By
3、Spring-Boot-Version 等等這些都是很簡單的熟悉
1、Implementation-Title 定義了擴展實現的標題 2、 Implementation-Version 定義擴展實現的版本 3、 Implementation-Vendor 定義擴展實現的組織 4、 Implementation-Vendor-Id 定義擴展實現的組織的標識 5、 Implementation-URL : 定義該擴展包的下載地址(URL)
1、Spring-Boot-Classes: BOOT-INF/classes/ 2、Spring-Boot-Lib: BOOT-INF/lib/
1、Main-Class
org.springframework.boot.loader.JarLauncher
這個很重要,很重要,是當前JRA的啟動類, 定義jar文件的入口類,該類必須是一個可執行的類,一旦定義了該屬性即可通過 java -jar x.jar來運行該jar文件。
2、Start-Class com.jc.xxxApplication
這個是你自己項目的啟動執行類的開始,我這里是Springboot的main方法的開始
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.transaction.annotation.EnableTransactionManagement;@EnableScheduling@MapperScan(basePackages = "com.xxxxx.mapper")@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)public class xxxxApplication { public static void main(String[] args) { SpringApplication.run(xxxxAdminApplication.class, args); }}
//// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package org.springframework.boot.loader;import org.springframework.boot.loader.archive.Archive;import org.springframework.boot.loader.archive.Archive.Entry;public class JarLauncher extends ExecutableArchiveLauncher { static final String BOOT_INF_CLASSES = "BOOT-INF/classes/"; static final String BOOT_INF_LIB = "BOOT-INF/lib/"; public JarLauncher() { } protected JarLauncher(Archive archive) { super(archive); } protected boolean isNestedArchive(Entry entry) { return entry.isDirectory() ? entry.getName().equals("BOOT-INF/classes/") : entry.getName().startsWith("BOOT-INF/lib/"); } public static void main(String[] args) throws Exception { (new JarLauncher()).launch(args); }}
看到上面的代碼沒有JarLauncher
,上面的第一張截圖中紅框標出來的, 這個就是 執行java -jar
的入口。這個類里面會加載我們寫代碼編譯出來的文件。
我這個JAR是Springboot項目打包生成的,JarLauncher
會加載上面第二張截圖中的class 和配置文件。
大家有興趣可以看看org/springframework/boot/loader
下面的類,這個包下面著重講解了Springboot 如何只有Main方法就可以運行加載我們編譯的class和配置文件。
以上就是Springboot如何優雅運行java -jar xxx.jar
154747.html
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
彩虹島瓦爾哈拉怎么走?1瓦爾哈拉殺死前兩個怪手然后在傳送門下殺死兩個流星錘打開門。其他怪物不用打,2不用殺怪物,可以去4和4,也沒有怪物可以殺。關鍵是從4傳送門到3(去3就是從4到5,然后一條直線到3)和6把圣女貞德全部干掉,傳送門就開了。注意,你可以去一個從4底只有一個圣女貞德的封閉的地方。其他的奇怪可以忽略。彩虹島瓦爾基里在哪里?瓦哈拉,是嗎?你在做第二份工作嗎?瓦哈拉在太空的頂端。彩虹島魔法...
ie瀏覽器被2345篡改怎樣恢復?可以使用360的攻擊工具,把2345的瀏覽器軟件卸載掉?;蛘呤强梢栽谟枚疽?,防止篡改的工具,全盤肯定你的瀏覽器主頁。不打網友會遇到了這種問題,如果沒有不使用360也可以是一些工具,還解決不了這個問題的話,那你是可以把你的系統原先按裝了。這又是到最后不可能的辦法。IE被篡改為2345如何解除?IE被篡改為2345解除方法如下在電腦桌面上找到IE瀏覽器,鼠標右鍵,右鍵...
autocad如何畫兩條平行直線的中心線?繪制直線的第一個點時,用手按住Ctrl的同時單擊鼠標右鍵,會彈出一個菜單,從中可以選擇 "從兩點的中點 ",依次點擊兩條平行線的端點得到中點,再畫一次得到中心線。cad如何畫曲線的平行線?具體操作步驟如下:需要準備的材料有:電腦,CAD。1.首先,打開CAD并點擊 "偏移和左側的圖標選項。2.然后輸入 "偏移和在這個頁面的命令的右邊。3.然后輸入頁面右側兩...