Razumijevanje datoteke manifesta JAR

1. Uvod

Java arhiva (JAR) opisana je u svojoj manifestnoj datoteci. Ovaj članak istražuje njegove brojne mogućnosti, uključujući dodavanje atribucije, izradu JAR-a izvršnim i ugradnju podataka o verzijama.

Započnimo, ipak, s brzim pregledom što je datoteka manifesta.

2. Manifestna datoteka

Datoteka manifesta je imenovana NAJVIŠE.MF i nalazi se ispod META-INF imenik u JAR-u. To je jednostavno popis parova ključeva i vrijednosti, tzv zaglavlja ili atributi, grupirani u odjeljke.

Ovi zaglavlja dostaviti metapodatke koji nam pomažu u opisivanju aspekata našeg JAR-a, poput verzija paketa, koju klasu aplikacije izvršiti, put klase, materijal s potpisima i još mnogo toga.

3. Dodavanje datoteke manifesta

3.1. Zadani manifest

Datoteka manifesta automatski se dodaje kad god stvorimo JAR.

Na primjer, ako gradimo JAR u OpenJDK 11:

jar cf MyJar.jar klase /

Izrađuje vrlo jednostavnu datoteku manifesta:

Manifest-verzija: 1.0 Izradio: 11.0.3 (AdoptOpenJDK)

3.2. Prilagođeni manifest

Ili možemo odrediti vlastitu datoteku manifesta.

Na primjer, recimo da imamo prilagođenu datoteku manifesta koja se zove manifest.txt:

Izgrađeno: baeldung

Možemo uključiti ovu datoteku i staklenka htjeti spojite ga sa zadanom datotekom manifesta kada koristimo m opcija:

jar cfm MyJar.jar manifest.txt klase /

Tada je rezultirajuća datoteka manifesta:

Manifest-verzija: 1.0 Izgradio: baeldung Izradio: 11.0.3 (AdoptOpenJDK)

3.3. Maven

Sad, sadržaj zadane datoteke manifesta mijenjati ovisno o tome koje alate koristimo.

Na primjer, Maven dodaje neka dodatna zaglavlja:

Manifest-verzija: 1.0 Arhiver-verzija: Plexus Archiver Izradio: Apache Maven 3.3.9 Ugradio: baeldung Build-Jdk: 11.0.3

Ova zaglavlja zapravo možemo prilagoditi u našem pom.

Recimo, na primjer, da želimo naznačiti tko je JAR stvorio i paket:

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

Ovo stvara datoteku manifesta s prilagođenim paket i napravio zaglavlja:

Manifest-verzija: 1.0 Build-Jdk-Spec: 11 Paket: com.baeldung.java Napravio: baeldung 

Potpuni popis opcija potražite u dokumentaciji dodatka Maven JAR.

4. Zaglavlja

Zaglavlje mora slijediti određeni format i biti odvojeno novim redom:

ključ1: vrijednost1 Ključ2: vrijednost2

Važeće zaglavlje mora imati razmak između dvotačke i vrijednosti. Tu je još jedna važna točka mora biti novi redak na kraju datoteke. Inače se zanemaruje posljednje zaglavlje.

Pogledajmo neka standardna zaglavlja iz specifikacije i neka uobičajena prilagođena zaglavlja.

4.1. Glavna zaglavlja

Glavna zaglavlja obično daju opće informacije:

  • Manifest-inačica: verzija specifikacije
  • Napravio: verzija alata i dobavljač koji je stvorio datoteku manifesta
  • Više izdanja: ako pravi, ovo je Multi-Release Jar
  • Izgrađeno: ovo prilagođeno zaglavlje daje ime korisnika koji je stvorio datoteku manifesta

4.2. Ulazna točka i put predavanja

Ako naš JAR sadrži pokrenuti program, tada možemo odrediti ulaznu točku. Slično tome, možemo pružiti razredna staza. Na taj način izbjegavamo da ga moramo navesti kada ga želimo pokrenuti.

  • Glavna klasa: paket i naziv klase s glavnom metodom (bez proširenja .class)
  • Put predavanja: razmak odvojenih popisa relativnih staza do knjižnica ili resursa

Na primjer, ako je naša ulazna točka prijave u Primjena.razred i koristi knjižnice i resurse, a zatim možemo dodati potrebna zaglavlja:

Glavna klasa: com.baeldung.Put klase aplikacije: core.jar lib / svojstva /

Put predavanja uključuje jezgra.jar i sve datoteke u lib i Svojstva direktoriji. Ta se imovina učitava u odnosu na mjesto izvršenja JAR-a, a ne iz samog JAR-a. Drugim riječima, moraju postojati izvan JAR-a.

4.3. Verzija i brtvljenje paketa

Ova standardna zaglavlja opisuju pakete u JAR-u.

  • Ime: paket
  • Datum implementacije-izgradnje: datum izrade za implementaciju
  • Naslov provedbe: naslov provedbe
  • Dobavljač implementacije: dobavljač za implementaciju
  • Verzija implementacije: izvedbena verzija
  • Specifikacija-naslov: naslov specifikacije
  • Specifikacija-dobavljač: dobavljač specifikacije
  • Specifikacija-inačica: verzija specifikacije
  • Zapečaćeno: ako je true, tada sve klase za paket dolaze iz istog JAR-a (zadana vrijednost je false)

Na primjer, ova zaglavlja manifesta nalazimo u MySQL Connector pogonitelju / J JAR. Oni opisuju verziju JDBC specifikacije koju JAR ispunjava, kao i verziju samog upravljačkog programa:

Specifikacija-Naslov: JDBC Specifikacija-Verzija: 4.2 Specifikacija-Dobavljač: Oracle Corporation Implementacija-Naslov: MySQL Connector / J Implementacija-Verzija: 8.0.16 Implementacija-Dobavljač: Oracle

4.4. Potpisan Jar

Možemo digitalno potpisati svoj JAR kako bismo dodali dodatnu sigurnost i provjeru. Iako je ovaj postupak izvan dosega ovog članka, na taj se način u datoteku manifesta dodaju standardna zaglavlja koja prikazuju svaku potpisanu klasu i njezin kodirani potpis. Za više detalja pogledajte dokumentaciju za potpisivanje JAR-a.

4.5. OSGI

Uobičajeno je vidjeti i prilagođena zaglavlja za OSGI snopove:

  • Naziv svežnja: naslov
  • Bundle-SymbolicName: jedinstveni identifikator
  • Verzija snopa: verzija
  • Uvoz-paket: paketi i verzije o kojima paket ovisi
  • Izvozni paket: paket paketa i verzije dostupni za upotrebu

Pogledajte naš članak Uvod u OSGI da biste saznali više o OSGI paketima.

5. Odjeljci

U datoteci manifesta postoje dvije vrste odjeljaka, glavni i po unosu. Zaglavlja koja se pojavljuju u glavnom odjeljku primjenjuju se na sve u JAR-u. Dok zaglavlja koja se pojavljuju u odjeljcima po unosu odnose se samo na imenovani paket ili klasu.

Uz to, zaglavlje koje se pojavljuje u odjeljku po unosu nadjačava isto zaglavlje u glavnom odjeljku. Uobičajeno je da odjeljci po unosu sadrže informacije o verzijama paketa i pečatima te digitalno potpisivanje.

Pogledajmo jednostavan primjer odjeljka po unosu:

Naslov implementacije: baeldung-primjeri Verzija implementacije: 1.0.1 Dobavljač implementacije: Baeldung Zapečaćeno: true Naziv: com / baeldung / utils / Zapečaćeno: false

Glavni odjeljak na vrhu zatvorio je sve pakete unutar našeg JAR-a. Međutim, paket com.baeldung.utils otpečaćen je odjeljkom po unosu.

6. Zaključak

Ovaj članak daje pregled kako dodati datoteku manifesta u JAR, kako koristiti odjeljke i neka uobičajena zaglavlja. Struktura datoteke manifesta omogućuje nam pružanje standardnih podataka, poput podataka o verziji.

Međutim, njegova fleksibilnost omogućuje nam definiranje podataka koje smatramo relevantnima za opisivanje sadržaja naših JAR-ova.