Multi-Release JAR súbory s Maven
1. Úvod
Jednou z nových funkcií, ktoré nám Java 9 prináša, je schopnosť zostavovať súbory Multi-Release JAR (MRJAR). Ako hovorí návrh vylepšenia JDK, umožňuje nám to mať v jednom JAR rôzne verzie triedy špecifické pre vydanie Java.
V tomto tutoriáli skúmame, ako nakonfigurovať súbor MRJAR pomocou Mavenu.
2. Maven
Maven je jedným z najpoužívanejších nástrojov na zostavenie v ekosystéme Java; jednou z jeho schopností je zabalenie projektu do súboru JAR.
V nasledujúcich častiach preskúmame, ako ho použiť na zostavenie MRJAR.
3. Ukážkový projekt
Začnime základným príkladom.
Najskôr definujeme triedu, ktorá vytlačí aktuálne používanú verziu Java; pred Java 9 bol jedným z prístupov, ktorý sme mohli použiť, System.getProperty metóda:
public class DefaultVersion {public String version () {return System.getProperty ("java.version"); }}
Teraz, od Java 9 a ďalej, môžeme používať nový verzia metóda z Beh programu trieda:
public class DefaultVersion {public String version () {return Runtime.version (). toString (); }}
Touto metódou môžeme získať a Runtime.Verzia inštancia triedy, ktorá nám poskytuje informácie o JVM použitom v novom formáte schémy verzie-reťazec.
Navyše pridajme App trieda na prihlásenie verzie:
public class App {private static final Logger logger = LoggerFactory.getLogger (App.class); public static void main (String [] args) {logger.info (String.format ("Beží na% s", nová DefaultVersion (). verzia ())); }}
Na záver umiestnime každú verziu aplikácie DefaultVersion do svojej vlastnej src / main adresárová štruktúra:
├── pom.xml ├── src │ ├── hlavní │ │ ├── java │ │ │ └── com │ │ │ └── baeldung │ │ │ └── multireleaseapp │ │ │ ├── DefaultVersion. java │ │ │ └── App.java │ │ └── java9 │ │ └── com │ │ └── baeldung │ │ └── multireleaseapp │ │ └── DefaultVersion.java
4. Konfigurácia
Na konfiguráciu MRJAR z vyššie uvedených tried musíme použiť dva doplnky Maven: Plugin kompilátora a Plugin JAR.
4.1. Doplnok Maven Compiler
V doplnku Maven Compiler Plugin musíme nakonfigurovať jedno spustenie pre každú verziu Java, ktorú zabalíme.
V tomto prípade pridáme dve:
org.apache.maven.plugins maven-compiler-plugin compile-java-8 compile 1.8 1.8 compile-java-9 compile compile 9 $ {project.basedir} / src / main / java9 $ {project.build.outputDirectory} / META -INF / verzie / 9
Použijeme prvé prevedenie zostaviť-java-8 zostaviť našu triedu Java 8 a zostaviť-java-9 prevedenie na zostavenie našej triedy Java 9.
To vidíme je potrebné nakonfigurovať compileSourceRoot a outputDirectory štítky s príslušnými zložkami pre verziu Java 9.
Avšak od maven-compiler-plugin 3.7.1, výstupný adresár nemusíme nastavovať manuálne. Namiesto toho musíme len povoliť multiReleaseOutput nehnuteľnosť:
9 $ {project.basedir} / src / main / java9 true
Keď je nastavené na pravda, doplnok kompilátora presunie všetky triedy špecifické pre vydanie do META-INF / verzie / $ {vydanie} adresár. Upozorňujeme, že musíme nastaviť prepustenie tu označte požadovanú verziu Java, inak zlyhá doplnok kompilátora.
4.2. Doplnok Maven JAR
Používame doplnok JAR na nastavenie Viacnásobné uvoľnenie vstup do pravda v našom MANIFEST spis. S touto konfiguráciou sa runtime Java bude pozerať dovnútra META-INF / verzie priečinok nášho súboru JAR pre triedy špecifické pre verziu; inak sa používajú iba základné triedy.
Pridajme maven-jar-plugin konfigurácia:
org.apache.maven.plugins maven-jar-plugin 3.2.0 true
5. Testovanie
Je čas vyskúšať náš vygenerovaný súbor JAR.
Keď vykonáme program Java 8, zobrazí sa nasledujúci výstup:
[main] INFO com.baeldung.multireleaseapp.App - beží na 1.8.0_252
Ale ak vykonáme s Java 14, uvidíme:
[hlavné] INFO com.baeldung.multireleaseapp.App - beží na 14.0.1 + 7
Ako vidíme, teraz používa nový výstupný formát. Upozorňujeme, že hoci bol náš MRJAR postavený na prostredí Java 9, je kompatibilný s viacerými hlavnými verziami platformy Java.
6. Záver
V tomto krátkom tutoriáli sme videli, ako nakonfigurovať nástroj na zostavenie Maven na generovanie jednoduchého MRJAR.
Celý kód uvedený v tomto tutoriále je ako vždy k dispozícii na GitHub.