使用Gradle编译为比Javac允许的Java级别低的级别

And*_*ert 5 java gradle java-12

我在Java 12上大吃一惊,并注意到javac最低目标Java级别已提高到1.7。

Execution failed for task ':com.foo:compileJava'.
> error: release version 6 not supported
Run Code Online (Sandbox Code Playgroud)

为什么我要编译为您要求的Java 6?

即使我的代码库要求的最低Java级别为1.7,我仍然希望将内核以较旧的Java级别进行编译,以便JVM可以启动,并且我可以输出一条更好的错误消息,指示必须使用Java 7+,而不是更多。神秘的不兼容类版本错误。

展望未来...

Java 6并不是太大的问题,但是我主要关心的是,如果Java仅支持N-5版本,那么到Java 14(大约从现在开始),我将不再能够编译为Java 8。仍然是一个非常流行的运行时版本。

我相信Maven可以通过工具链解决此类问题,但是Gradle是否提供类似的功能?

编辑:我还注意到JEP 182尚未批准,但是如果批准将意味着仅支持N-3版本。