A JAR manifeszt fájl megértése

1. Bemutatkozás

A Java archívumot (JAR) a manifesztfájlja írja le. Ez a cikk számos képességét vizsgálja, beleértve az attribútum hozzáadását, a JAR futtathatóvá tételét és a verziós információk beágyazását.

Kezdjük azonban egy gyors áttekintéssel, hogy mi a manifeszt fájl.

2. A manifeszt fájl

A jegyzékfájl neve MANIFEST.MF és a META-INF könyvtár a JAR-ban. Ez egyszerűen hívott kulcs- és értékpárok listája fejlécek vagy attribútumokat, szakaszokba csoportosítva.

Ezek fejlécek olyan metaadatokat szolgáltat, amelyek segítenek leírni JAR-junk szempontjait, például a csomagok verzióit, a végrehajtandó alkalmazásosztályt, az osztályútvonalat, az aláírás anyagát és még sok mást.

3. Nyilvántartási fájl hozzáadása

3.1. Az alapértelmezett manifeszt

A JAR létrehozásakor a jegyzékfájl automatikusan hozzáadódik.

Például, ha építünk egy JAR-t az OpenJDK 11-ben:

jar cf MyJar.jar osztályok /

Nagyon egyszerű jegyzékfájlt állít elő:

Manifest-Version: 1.0 Készítette: 11.0.3 (AdoptOpenJDK)

3.2. Egyedi Kiáltvány

Vagy megadhatjuk a saját jegyzékfájlunkat.

Tegyük fel például, hogy van egy egyedi manifeszt fájlunk manifest.txt:

Beépítette: baeldung

Felvehetjük ezt a fájlt és befőttes üveg akarat egyesítse az alapértelmezett jegyzékfájllal amikor használjuk a m választási lehetőség:

jar cfm MyJar.jar manifest.txt osztályok /

Ezután a kapott manifesztfájl:

Manifest-Version: 1.0 Built-By: baeldung Created-by: 11.0.3 (AdoptOpenJDK)

3.3. Maven

Most az alapértelmezett jegyzékfájl tartalma attól függően, hogy mely eszközöket használjuk.

Például Maven néhány extra fejlécet ad hozzá:

Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Created-By: Apache Maven 3.3.9 Built-By: baeldung Build-Jdk: 11.0.3

Ezeket a fejléceket testreszabhatjuk a pomunkban.

Mondjuk például, hogy meg akarjuk jelölni, hogy ki készítette a JAR-ot és a csomagot:

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

Ez egy manifeszt fájlt hoz létre egy egyéni beállítással csomag és készítette fejlécek:

Manifest-Version: 1.0 Build-Jdk-Spec: 11 Csomag: com.baeldung.java Létrehozta: baeldung 

A lehetőségek teljes listáját a Maven JAR plugin dokumentációjában találja.

4. Fejlécek

A fejlécnek egy bizonyos formátumot kell követnie, és új sorral kell elválasztani:

kulcs1: érték1 kulcs2: érték2

Az érvényes fejlécnek szóköznek kell lennie a kettőspont és az érték között. Egy másik fontos pont ott van új sornak kell lennie a fájl végén. Ellenkező esetben az utolsó fejléc figyelmen kívül marad.

Nézzünk meg néhány szabványos fejlécet a specifikációból és néhány általános egyéni fejlécet.

4.1. Fő fejlécek

A fő fejlécek általában általános információkat nyújtanak:

  • Manifest-Version: a specifikáció változata
  • Készítette: a jegyzékfájlt létrehozó eszközverzió és szállító
  • Több kiadás: ha igaz, akkor ez egy több kiadású üveg
  • Által építve: ez az egyéni fejléc megadja annak a felhasználónak a nevét, aki létrehozta a jegyzékfájlt

4.2. Belépési pont és osztályút

Ha a JAR futtatható alkalmazást tartalmaz, akkor megadhatjuk a belépési pontot. Hasonlóképpen megadhatjuk a osztályút. Ezzel elkerüljük, hogy meg kell adnunk, amikor futtatni akarjuk.

  • Főosztály: az osztály csomagja és neve egy fő módszerrel (.class kiterjesztés nélkül)
  • Osztály-Path: szóközzel elválasztott lista a könyvtárakhoz vagy erőforrásokhoz vezető relatív utakról

Például, ha az alkalmazás belépési pontja van Application.class könyvtárakat és erőforrásokat használ, majd hozzáadhatjuk a szükséges fejléceket:

Main-Class: com.baeldung.Application Class-Path: core.jar lib / properties /

Az osztályút tartalmazza mag.jar és az összes fájl a lib és tulajdonságait könyvtárakat. Ezeket az eszközöket a JAR végrehajtásának helyéhez képest töltik be, és nem magából a JAR-ból. Más szavakkal, a JAR-on kívül kell létezniük.

4.3. Csomag verzió és tömítés

Ezek a szabványos fejlécek a JAR csomagjait írják le.

  • Név: a csomag
  • Megvalósítás-Készítés-Dátum: a megvalósítás készítésének dátuma
  • Végrehajtási cím: a megvalósítás címe
  • Megvalósítás-szállító: a megvalósítás szállítója
  • Megvalósítás-verzió: a megvalósítás verziója
  • Specifikáció-cím: a specifikáció címe
  • Specifikáció-Szállító: a specifikáció szállítója
  • Specifikáció-verzió: a specifikáció változata
  • Zárt: ha igaz, akkor a csomag összes osztálya ugyanabból a JAR-ból származik (az alapértelmezés hamis)

Például ezeket a nyilvánvaló fejléceket megtaláljuk a MySQL illesztőprogram Connector / J JAR-ban. Leírják a JDBC specifikáció verzióját, amelynek a JAR megfelel, valamint magát az illesztőprogram verzióját:

Specifikáció-Cím: JDBC Specifikáció-Változat: 4.2 Specifikáció-Szállító: Oracle Corporation Megvalósítás-Cím: MySQL Connector / J Végrehajtás-Változat: 8.0.16 Megvalósítás-Eladó: Oracle

4.4. Aláírt Jar

Digitálisan aláírhatjuk a JAR-t, hogy további biztonságot és ellenőrzést nyújtsunk. Bár ez a folyamat kívül esik a cikk hatályán, ezáltal az összes aláírt osztályt és kódolt aláírást bemutató fejlécek hozzáadódnak a jegyzékfájlhoz. További részletekért olvassa el a JAR aláírási dokumentációját.

4.5. OSGI

Gyakori az OSGI csomagok egyedi fejléceinek megtekintése is:

  • Csomag-név: cím
  • Bundle-SymbolicName: egyedi azonosító
  • Bundle-Version: verzió
  • Import-Package: csomagok és verziók, amelyektől a csomag függ
  • Export-csomag: csomagok és verziók használhatók

Az OSGI csomagokról további információt az OSGI Bevezetés című cikkünkben talál.

5. Szakaszok

A jegyzékfájlban kétféle szakasz létezik, a fő és a bejegyzésenként. A fő szakaszban megjelenő fejlécek mindenre vonatkoznak a JAR-ban. Mivel A bejegyzésenkénti szakaszokban megjelenő fejlécek csak a megnevezett csomagra vagy osztályra vonatkoznak.

Ezenkívül a belépésenkénti szakaszban megjelenő fejléc felülírja ugyanazt a fejlécet a fő szakaszban. Gyakran előfordul, hogy a belépésenkénti szakaszok információkat tartalmaznak a csomag verzióiról, a lezárásról és a digitális aláírásról.

Nézzünk meg egy bejegyzésenkénti szakasz egyszerű példáját:

Végrehajtás címe: baeldung-példák Végrehajtás-verzió: 1.0.1 Végrehajtás-szállító: Baeldung Sealed: true Név: com / baeldung / utils / Sealed: false

A tetején lévő fő szakasz lezárta az összes csomagot a JAR-on belül. Azonban a csomag com.baeldung.utils a bejegyzésenkénti szakasz lezárja.

6. Következtetés

Ez a cikk áttekintést nyújt a jegyzékfájl hozzáadásáról a JAR-hoz, a szakaszok és néhány általános fejléc használatáról. A jegyzékfájl felépítése lehetővé teszi számunkra, hogy szabványos információkat, például verzió információkat szolgáltassunk.

Rugalmassága azonban lehetővé teszi számunkra, hogy meghatározzunk bármilyen információt, amelyet relevánsnak találunk a JAR-ok tartalmának leírására.