使用Maven编译JDK12预览function

使用JDK / 12 EarlyAccess Build 10 ,JEP-325 Switch Expressions已作为JDK中的预览function集成。 表达式的示例代码(如在JEP中一样):

Scanner scanner = new Scanner(System.in); Day day = Day.valueOf(scanner.next()); switch (day) { case MONDAY, TUESDAY -> System.out.println("Back to work.") ; case WEDNESDAY -> System.out.println("Wait for the end of week...") ; case THURSDAY,FRIDAY -> System.out.println("Plan for the weekend?"); case SATURDAY, SUNDAY -> System.out.println("Enjoy the holiday!"); } 

Day是一个枚举

 public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } 

预览语言和VMfunctionJEP-12已经详细说明了如何在编译和运行时使用javacjava启用该function。

如何使用Maven试用这个function?

第1步:可以使用以下maven配置使用--enable-preview--release 12参数编译代码。

    org.apache.maven.plugins maven-compiler-plugin 3.8.0  12 --enable-preview     org.apache.maven.plugins maven-shade-plugin 3.1.0   package  shade      com.stackoverflow.nullpointer.expression.SwitchExpressions         

注意 : – 我还必须在我的MacOS上确保我的~/.mavenrc文件配置为将java 12标记为为maven配置的默认java。

第2步:执行maven命令从模块类构建jar

 mvn clean verify 

步骤3:使用命令行执行上一步中创建的jar的主类:

 java --enable-preview -jar target/jdk12-updates-1.0.0-SNAPSHOT.jar #the last argument being the path to my jar 

这会产生预期的输出:

在此处输入图像描述

源于GitHub