我应该使用啥版本的 Java 来开发我的 MOJO Maven 插件?
Posted
技术标签:
【中文标题】我应该使用啥版本的 Java 来开发我的 MOJO Maven 插件?【英文标题】: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。 【参考方案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 运行和构建。
【讨论】:
以上是关于我应该使用啥版本的 Java 来开发我的 MOJO Maven 插件?的主要内容,如果未能解决你的问题,请参考以下文章
Java Maven MOJO - 从项目 POM 中获取信息