Xtend force java 7 语言等级

Xtend force java 7 language level

我在 Xtend-plugin 的 intellij 中使用 Xtend。我的项目语言级别设置为 Java 8,Xtend 可以很好地编译到 Java 8(例如使用 lambda 表达式)。

由于特定原因,我需要 Xtend 生成 Java 7 代码,而无需更改我剩余项目的语言级别 (Java 8)。

在Xtend项目设置中我可以设置语言级别,但是这个选项被忽略了。我相信它被忽略了,因为剩余的项目仍然使用 JDK 8 和 Java 8 语言级别。

是否有一个选项可以强制 Xtend 使用与源代码不同(较低)的语言级别?

关于上述问题我没有太多细节,但假设如果该项目是基于 Maven 的,那么您可以在 pom.xml

中进行目标编译
<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId>
 <version>3.5.1</version>
 <configuration>
  <source>1.7</source>
  <target>1.7</target>
 </configuration>
</plugin>

Xtend-Compiler 中至少有一个 bug 可以防止交叉编译到比项目类路径中的 JDK 版本更低的版本。

示例:

#[ 42, 43 ].forEach[ println(it) ]

如果项目配置为在类路径中有Java-8 类,生成的Java-代码将自动使用Java-8 APIforEach 默认方法 IterableConsumer、...)

这是任何 source/target 级别设置的 独立