Több kiadású JAR fájlok Maven-nel
1. Bemutatkozás
A Java 9 egyik új funkciója a Multi-Release JAR (MRJAR) felépítésének képessége. Ahogy a JDK Enhancement javaslat mondja, ez lehetővé teszi számunkra, hogy egy osztály különböző Java kiadás-specifikus verziói legyenek ugyanabban a JAR-ban.
Ebben az oktatóanyagban azt vizsgáljuk, hogyan konfigurálható egy MRJAR fájl a Maven használatával.
2. Maven
A Maven az egyik leggyakrabban használt építőeszköz a Java ökoszisztémában; egyik képessége egy projekt JAR-ba csomagolása.
A következő szakaszokban azt vizsgáljuk, hogyan lehetne MRJAR-t készíteni ehelyett.
3. Minta projekt
Kezdjük egy alap példával.
Először meghatározunk egy osztályt, amely kinyomtatja a jelenleg használt Java verziót; Java 9 előtt az egyik megközelítés, amelyet használhattunk, a System.getProperty módszer:
public class DefaultVersion {public String version () {return System.getProperty ("java.version"); }}
Most, a Java 9-től kezdve, használhatjuk az újat változat módszer a Futásidő osztály:
public class DefaultVersion {public String version () {return Runtime.version (). toString (); }}
Ezzel a módszerrel a Futásidejű verzió osztálypéldány, amely információt nyújt az új verzió-karakterlánc séma formátumban használt JVM-ről.
Ráadásul tegyünk hozzá egy App osztály a verzió naplózásához:
public class App {private static final Logger logger = LoggerFactory.getLogger (App.class); public static void main (String [] args) {logger.info (String.format ("Futás% s-on", új DefaultVersion (). verzió ())); }}
Végül helyezzük el a DefaultVersion a sajátjába src / main könyvtár felépítése:
├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── baeldung │ │ │ └── multireleaseapp │ │ │ ├── DefaultVersion. java │ │ │ └── App.java │ │ └── java9 │ │ └── com │ │ └── baeldung │ │ └── multireleaseapp │ │ └── DefaultVersion.java
4. Konfiguráció
Az MRJAR konfigurálásához a fenti osztályokból két Maven beépülő modult kell használnunk: a Compiler plugint és a JAR plugint.
4.1. Maven Compiler plugin
A Maven Compiler beépülő modulban minden végrehajtandó Java-verzióhoz egy végrehajtást kell konfigurálnunk.
Ebben az esetben kettőt adunk hozzá:
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 / verziók / 9
Az első végrehajtást használjuk fordítsd-java-8 Java 8 osztályunk és a compile-java-9 végrehajtás a Java 9 osztályunk fordításához.
Ezt láthatjuk konfigurálni kell a compileSourceRoot és kimeneti könyvtár címkéket a Java 9 verzió megfelelő mappáival.
Azonban a maven-compiler-plugin 3.7.1, nem kell manuálisan beállítanunk a kimeneti könyvtárat. Ehelyett csak annyit kell tennünk, hogy engedélyezzük a multiReleaseOutput ingatlan:
9 $ {project.basedir} / src / main / java9 true
Ha beállítva igaz, a fordító plugin az összes kiadásspecifikus osztályt a META-INF / verziók / $ {release} Könyvtár. Felhívjuk figyelmét, hogy be kell állítanunk a kiadás itt jelölje be a kívánt Java verziót, különben a fordító plugin nem sikerül.
4.2. Maven JAR bővítmény
A JAR plugint használjuk a Több kiadás belépés ide igaz miénkben NYILVÁNVALÓ fájl. Ezzel a konfigurációval a Java futásideje a META-INF / verziók a JAR fájl mappája verzióspecifikus osztályokhoz; egyébként csak az alaposztályokat használják.
Tegyük hozzá a maven-jar-plugin konfiguráció:
org.apache.maven.plugins maven-jar-plugin 3.2.0 true
5. Tesztelés
Itt az ideje tesztelni a létrehozott JAR fájlt.
Amikor a Java 8 alkalmazással hajtunk végre, a következő kimenetet látjuk:
[main] INFO com.baeldung.multireleaseapp.App - Az 1.8.0_252 verzión fut
De ha Java 14-tel hajtunk végre, akkor a következőket látjuk:
[main] INFO com.baeldung.multireleaseapp.App - 14.0.1 + 7-en fut
Mint láthatjuk, most az új kimeneti formátumot használja. Vegye figyelembe, hogy bár az MRJAR-junkat Java 9-gyel építettük, kompatibilis több nagy Java-platform verzióval.
6. Következtetés
Ebben a rövid bemutatóban láttuk, hogyan kell konfigurálni a Maven build eszközt egy egyszerű MRJAR létrehozására.
Mint mindig, az oktatóanyagban bemutatott teljes kód elérhető a GitHubon.