1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          MANIFEST.MF是個什么?

          來源:互聯網轉載 時間:2024-01-29 07:56:50

          MANIFEST.MF是個什么?

          寫這篇文件主要記錄JRA文件里面到底是什么?然后MANIFEST.MF又是什么?Springboot 如何只有Main方法就可以運行的?

          Springboot項目打包

          Java開發中JRA包中經常會看到這個文件中。Springboot打包也會生成對應的JRA,下圖我們用maven命令直接編譯打包

          執行mvn clean package -DskipTests=true -P test ,生成的文件如下

          • 這個JAR我們分兩部分來講解請看下圖

          BOOT-INF 注意了這個是我們自己寫的代碼生成的class和配置文件 META-INF 包含了MANIFEST.MFmaven文件夾

          maven文件夾下面包含pom.xmlpom.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.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

          標簽:manifest.mf-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          彩虹島瓦爾哈拉怎么走?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.然后輸入頁面右側兩...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>