Pochopenie súboru manifestu JAR

1. Úvod

Archív Java (JAR) je opísaný v súbore manifestu. Tento článok skúma mnoho jeho funkcií, vrátane pridania zdroja, spustiteľnosti JAR a vloženia informácií o verziách.

Začnime však rýchlym prehľadom toho, čo je to súbor manifestu.

2. Súbor manifestu

Súbor manifestu je pomenovaný MANIFEST.MF a nachádza sa pod META-INF adresár v JAR. Je to jednoducho zoznam párov kľúčov a hodnôt, tzv hlavičky alebo atribúty, zoskupené do sekcií.

Títo hlavičky dodať metadáta, ktoré nám pomôžu opísať aspekty nášho súboru JAR, ako sú verzie balíkov, trieda aplikácií, ktoré sa majú vykonať, cesta triedy, podpisový materiál a oveľa viac.

3. Pridanie súboru manifestu

3.1. Predvolený manifest

Súbor manifestu sa pridá automaticky, kedykoľvek vytvoríme súbor JAR.

Napríklad, ak postavíme JAR v OpenJDK 11:

triedy jar MyJar.jar /

Produkuje veľmi jednoduchý súbor manifestu:

Verzia manifestu: 1.0 Vytvoril: 11.0.3 (AdoptOpenJDK)

3.2. Vlastný manifest

Alebo môžeme určiť náš vlastný súbor manifestu.

Povedzme napríklad, že máme vlastný súbor manifestu s názvom manifest.txt:

Staviteľ: baeldung

Môžeme zahrnúť tento súbor a jar bude zlúčiť s predvoleným súborom manifestu keď používame m možnosť:

jar cfm MyJar.jar manifest.txt triedy /

Výsledný súbor manifestu je potom:

Verzia manifestu: 1.0 Vytvoril: baeldung Vytvoril: 11.0.3 (AdoptOpenJDK)

3.3. Maven

Teraz obsah predvoleného súboru manifestu meniť v závislosti od toho, aké nástroje používame.

Napríklad Maven pridá nejaké ďalšie hlavičky:

Verzia manifestu: Verzia archivátora 1.0: Archív Plexus Vytvoril: Apache Maven 3.3.9 Staviteľ: baeldung Build-Jdk: 11.0.3

Tieto hlavičky môžeme skutočne prispôsobiť v našom pom.

Povedzme napríklad, že chceme označiť, kto vytvoril súbor JAR, a balíček:

 org.apache.maven.plugins maven-jar-plugin 3.1.2 com.baeldung.java baeldung 

Týmto sa vygeneruje súbor manifestu s vlastným balíček a vytvoril hlavičky:

Manifest-Version: 1.0 Build-Jdk-Spec: 11 Package: com.baeldung.java Autor: baeldung 

Kompletný zoznam možností nájdete v dokumentácii k pluginu Maven JAR.

4. Hlavičky

Hlavička musí mať určitý formát a musí byť oddelená novým riadkom:

kľúč1: hodnota1 Kľúč2: hodnota2

Platná hlavička musí mať medzi dvojbodkou a hodnotou medzeru. Je tu ďalší dôležitý bod musí byť nový riadok na konci súboru. V opačnom prípade je posledná hlavička ignorovaná.

Pozrime sa na niektoré štandardné hlavičky zo špecifikácie a niektoré bežné vlastné hlavičky.

4.1. Hlavné hlavičky

Hlavné hlavičky zvyčajne poskytujú všeobecné informácie:

  • Verzia manifestu: verzia špecifikácie
  • Vytvoril: verzia nástroja a dodávateľ, ktorý vytvoril súbor manifestu
  • Viacnásobné uvoľnenie: ak pravda, potom ide o nádobu na viacnásobné uvoľnenie
  • Zabudované: táto vlastná hlavička dáva meno používateľa, ktorý vytvoril súbor manifestu

4.2. Vstupný bod a trieda cesty

Ak náš JAR obsahuje spustiteľnú aplikáciu, môžeme určiť vstupný bod. Podobne môžeme poskytnúť triedna cesta. Týmto sa vyhneme tomu, aby sme ho museli špecifikovať, keď ho chceme spustiť.

  • Hlavná trieda: balík a názov triedy s hlavnou metódou (bez prípony .class)
  • Cesta triedy: medzerou oddelený zoznam relatívnych ciest ku knižniciam alebo prostriedkom

Napríklad ak je náš vstupný bod aplikácie v Application.class a využíva knižnice a zdroje, potom môžeme pridať potrebné hlavičky:

Hlavná trieda: com.baeldung. Cesta triedy aplikácie: core.jar lib / vlastnosti /

Cesta triedy zahrnuje core.jar a všetky súbory v priečinku lib a vlastnosti adresáre. Tieto prostriedky sa načítajú vzhľadom na miesto, kde sa vykonáva JAR, a nie zo samotného JAR. Inými slovami, musia existovať mimo JAR.

4.3. Verzia balenia a tesnenie

Tieto štandardné hlavičky popisujú balíčky v rámci JAR.

  • názov: balík
  • Dátum implementácie - zostavenie: dátum zostavenia implementácie
  • Názov implementácie: názov implementácie
  • Implementácia - dodávateľ: predajca implementácie
  • Implementačná verzia: implementačná verzia
  • Špecifikácia - názov: názov špecifikácie
  • Špecifikácia - dodávateľ: predajca špecifikácie
  • Verzia špecifikácie: verzia so špecifikáciou
  • Zapečatené: ak je true, potom všetky triedy pre balík pochádzajú z rovnakého JAR (predvolená hodnota je false)

Tieto hlavičky manifestu napríklad nájdeme v ovládači MySQL Connector / J JAR. Opisujú verziu špecifikácie JDBC, s ktorou sa JAR stretáva, ako aj verziu samotného ovládača:

Názov špecifikácie: JDBC Špecifikácia-verzia: 4.2 Špecifikácia-Dodávateľ: Oracle Corporation Názov implementácie: MySQL Connector / J Implementačná-Verzia: 8.0.16 Implementácia-Dodávateľ: Oracle

4.4. Podpísaný Jar

Môžeme digitálne podpísať náš JAR a pridať tak ďalšie zabezpečenie a overenie. Aj keď tento proces nepatrí do rozsahu pôsobnosti tohto článku, pritom sa do súboru manifestu pridajú štandardné hlavičky, ktoré zobrazujú každú podpísanú triedu a jej zakódovaný podpis. Ďalšie informácie nájdete v podpisovej dokumentácii JAR.

4.5. OSGI

Je bežné, že vidíte aj vlastné hlavičky balíkov OSGI:

  • Názov balíka: titul
  • Bundle-SymbolicName: jedinečný identifikátor
  • Verzia balíka: verzia
  • Import-Package: balíčky a verzie, na ktorých balík závisí
  • Exportný balík: dostupné zväzky balíkov a verzie

V našom článku Úvod do OSGI sa dozviete viac o balíkoch OSGI.

5. Sekcie

V súbore manifestu sú dva typy sekcií, hlavný a každý záznam. Hlavičky, ktoré sa zobrazujú v hlavnej časti, sa vzťahujú na všetko v súbore JAR. Keďže hlavičky, ktoré sa objavujú v sekciách pri vstupe, sa vzťahujú iba na pomenovaný balík alebo triedu.

Okrem toho hlavička, ktorá sa zobrazuje v sekcii na vstup, má prednosť pred rovnakou hlavičkou v hlavnej sekcii. Je bežné, že sekcie po vstupe obsahujú informácie o verziách balíkov a zalepení plus digitálne podpisovanie.

Pozrime sa na jednoduchý príklad sekcie podľa vstupu:

Implementation-Title: baeldung-examples Implementation-Version: 1.0.1 Implementation-Vendor: Baeldung Sealed: true Názov: com / baeldung / utils / Sealed: false

Hlavná časť v hornej časti zapečatila všetky balíčky v rámci nášho JAR. Avšak balíček com.baeldung.utils je odpečatená sekciou za vstupom.

6. Záver

Tento článok poskytuje prehľad o tom, ako pridať súbor manifestu do súboru JAR, ako používať sekcie a niektoré bežné hlavičky. Štruktúra súboru manifestu nám umožňuje poskytovať štandardné informácie, napríklad informácie o verzii.

Jeho flexibilita nám však umožňuje definovať akékoľvek informácie, ktoré považujeme za relevantné pre opis obsahu našich JAR.


$config[zx-auto] not found$config[zx-overlay] not found