我应该使用什么版本的 Java 来开发我的 MOJO Maven 插件?

What version of Java should I use for developing my MOJO Maven Plugin?

我目前正在实施一个新的 Maven 插件,我想使用 Java 11 进行编译和执行。

但是,我希望我的 Maven 插件能被我们的大多数项目使用。有的是运行在Java8,有的在Java11.

如果我想让它包含在其他项目中,是否必须在我的 Maven 插件中使用 Java 8?有没有办法在 Java 11 中实现它并使其可用于 Java 8 项目?

通常情况下:视情况而定。并且 Maven Java 用于不同级别,因此这需要一些解释:

您要使用 Java 9+ 特定的 features/APIs 吗?

如果没有,您可以使用Java 11构建您的项目,但您需要将<release>8</release>添加到maven-compiler-plugin以确保代码与Java 8兼容.

如果您打算使用 Java 9+ features/APIs,请将 <release>11</release> 添加到 maven-compiler-plugin。现在你要求你的用户,他们 运行 Maven 至少 Java 11(这不是问题,即使 Maven 3.0 运行 也可以 Java 14-ea)。

即使 Java 11 上的 Maven 运行s,您的用户仍然可以创建 Java 8 个兼容项目(就像第一个项目符号中的 "if not, ..."),但大多数人习惯于 运行 并使用 Java 构建 8.