【问题标题】:What version of Java should I use for developing my MOJO Maven Plugin?我应该使用什么版本的 Java 来开发我的 MOJO Maven 插件?
【发布时间】:2020-01-17 09:12:26
【问题描述】:

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

但是,我希望我们的大多数项目都可以使用我的 Maven 插件。其中一些在 Java 8 中运行,一些在 Java 11 中运行。

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

【问题讨论】:

  • 如果您最终计划使用从您的类中创建的 JAR 创建工件,这并不重要,您可以使用 Java-8 或 Java-11 (MR-JAR) 开发它们。不同之处可能在于有人将它们公开为 JMOD,而不是在 Java-9 中引入,而 Maven 上没有太多工作反映在包装这种类型上。
  • “有没有办法在 Java 11 中实现它并使其可用于 Java 8 项目?” 不,您可以使用 Java 11 编译器,尽管它更容易使用 Java 8 编译器以确保兼容性(需要更少的编译器选项),但源代码仍然必须是 Java 8 代码,即不使用 Java 9+ 功能或 API。

标签: java maven maven-plugin java-11 mojo


【解决方案1】:

通常情况下:这取决于。并且与Maven Java在不同的层次上使用,所以这里需要一点解释:

您打算使用 Java 9+ 的特定功能/API 吗?

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

如果您确实计划使用 Java 9+ 功能/API,请将 <release>11</release> 添加到 maven-compiler-plugin。现在您要求您的用户至少使用 Java 11 运行 Maven(这不是问题,即使 Maven 3.0 也可以在 Java 14-ea 上运行良好)。

即使 Maven 在 Java 11 上运行,您的用户仍然可以创建与 Java 8 兼容的项目(就像第一个项目符号中的“如果不是,...”),但大多数项目都用于使用 Java 8 运行和构建。

【讨论】:

    猜你喜欢
    • 2020-08-29
    • 2014-03-15
    • 2014-04-12
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    相关资源
    最近更新 更多