使用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已经详细说明了如何在编译和运行时使用javac
和java
启用该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