在JDK/12 EarlyAccess Build10中,JEP-325开关表达式已经作为预览特性集成在JDK中。表达式的示例代码(在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
}
可以使用以下maven配置,使用--enable-preview
以及--release12
+(例如,13
、14
、15
)参数来编译代码。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>12</release> <!-- <release>13/14/15</release> -->
<compilerArgs>--enable-preview</compilerArgs>
</configuration>
</plugin>
<!-- This is just to make sure the class is set as main class to execute from the jar-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>edu.forty.bits.expression.SwitchExpressions</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
注意:-我还必须在MacOS上确保我的~/.mavenrc
文件被配置为将Java13标记为Maven配置的默认java。
执行maven命令从模块类构建jar
mvn clean verify
java --enable-preview -jar target/forty-bits-of-java-1.0.0-SNAPSHOT.jar
最后一个参数是到Maven构建的jar的路径。
这将产生预期的输出:
(截图来自之前的一次执行。)
GitHub上的来源
<compilerArgs>
<arg>--enable-preview</arg>
</compilerArgs>
原因是,如果您指定了两个不同的参数,它在配置验证期间不会失败,并且稍后找到的参数会推翻有效配置:
<compilerArgs>--enable-preview</compilerArgs>
<compilerArgs>-Xlint:all</compilerArgs>
我一定是个反Maven的人,因为每次我尝试使用它时,我都会花很多时间挣扎,然后就放弃了。我的最新情况是,我不能编译Java7源代码,尽管有1.7的JDK。 以下是的输出。有趣的是,当我使用Maven 3.0.4时,错误消息是而不是使用Maven 3.2.1的 正如您所看到的,我使用的是Maven的最新版本,Maven使用的是Java1.7。 我认为脚本正在添加,因为我的环境变量没有指定它。 我正在
我看到了很多基于maven pom.xml构建文件的spring项目。还有一件奇怪的事情:在没有公共静态void main()方法的情况下构建项目。例如:https://github.com/geowarin/spring-mvc-security。在Spring.io的常用示例中,有一些类带有@SpringBootApplication注释和SpringApplication.Run(appli
Handlebars.compile(template, options) 编译一个模版以立即运行。 const template = Handlebars.compile("{{foo}}"); template({}); 支持多种选项以更改模版的执行方式。 data: 设置为 false 以终止 @data 跟踪。 compat: 设置为 true 以允许递归领域查找。 knownHelpe
3.3 编译和执行源码 导入成功之后,应该就没有编译错误了!此时你可以运行一下webmagic-core项目中自带的exmaple:"us.codecraft.webmagic.processor.example.GithubRepoPageProcessor"。 同样,看到控制台输出如下,则表示源码编译和执行成功了!
我正在用Java编写一个程序,并且使用JavaFX作为GUI。直到今天,我一直在使用javafx独立编写代码,所有的事情都运行得很顺利。我已经决定开始使用maven,现在项目不编译,也不运行或执行。 这是我的主要课程: 我在其他项目中使用过maven,但从未使用过JavaFX。我该怎么办?
我正在与Maven一起构建一个GWT项目。我为gwt编译添加了gwt maven插件,如下所示: 我在executions标签下包含了编译目标,希望在编译阶段执行GWT编译。但GWT编译仅在包阶段或运行mvn package命令时执行 即使为gwt-dev依赖项设置了提供的作用域,我也会收到如下所示的警告。 1) 为什么在编译阶段不执行GWT编译 2)我应该为GWT(GWT用户、GWT开发人员)依