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.