【问题标题】:Run Maven archetype "quickstart" in Java 10?在 Java 10 中运行 Maven 原型“快速入门”?
【发布时间】:2018-10-14 07:12:09
【问题描述】:

当我在 macOS Sierra 上使用 Oracle 10.0.1 从 Maven 原型 maven-archetype-quickstart 版本 1.3 创建新的 IntelliJ 2018.1 项目时,我在执行 Maven install 时收到此错误。

[错误] 无法在项目 h2e2 上执行目标 org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test (default-test):执行目标 org.apache.maven 的默认测试。 plugins:maven-surefire-plugin:2.20.1:test failed.: NullPointerException -> [Help 1]

我在创建新项目后直接运行它。我正在编写 no 代码。我可以运行默认行:

    public static void main( String[] args ) { System.out.println( "Hello World!" ); }

...从代码编辑器中单击的上下文菜单中选择Run 'App.main()'。这行得通,但是 Maven install 失败了。

在 IntelliJ 的 Maven 窗格中执行 cleaninstall 并不能解决问题。

如果我将 IntelliJ File > Project Structure > Project > Project SDK > 从 10.0.1 切换到 1.8.0_171(并将 Project language level 设置为 8 - Lambdas, type annotations etc.),那么 Maven install 会成功.

[信息] --------------------------------------------- ----------------------------------------

[信息] 构建成功

[信息] --------------------------------------------- ----------------------------------------

如果我将该设置返回到 Java 10,Maven install 将再次失败,并出现同样的错误。

我运行的是外部 Maven 3.5.3,而不是 IntelliJ 捆绑的旧版本,没有什么特别的原因。

我现有的基于 Java 8 的旧项目没有问题。我唯一的问题是尝试使用 Java 10 创建新的基于 Maven 的 quickstart 项目。

【问题讨论】:

  • 是否也因2.21.0 of surefire 而失败?
  • @nullpointer 我对万无一失一无所知。我只想要一个非常简单、简洁的基于 Maven 的项目。我认为这就是 quickstart 原型的目的。
  • 你能尝试在你的 pom.xml 中设置这个属性吗:<maven-surefire-plugin.version>2.21.0</maven-surefire-plugin.version> 你在 pom 中的 java-version 是什么?原型默认为 1.7... ` 1.7` ` 1.7` maven 也使用 Java 10个JDK?您可以通过运行mvn -X clean 来检查这一点
  • @Maarten 如何在 IntelliJ IDE 中运行mvn -X clean?是否可以将 -X 之类的参数传递给 IntelliJ 的 Maven 窗格中的 clean 等生命周期项?
  • 对于 Java 10,您必须将 surefire/failsafe 插件升级到 2.21.0 ....

标签: java maven intellij-idea maven-3 java-10


【解决方案1】:

maven-surefire-plugin 的更高版本

Java 10 的原型似乎尚未更新。

根据这篇博文:http://joshlong.com/jl/blogPost/java-10.html,您可以执行以下操作来启动并运行它...

....不过,我想使用 Java 10,所以我打开了 pom.xml 文件并 将 java.version 属性值更改为 10。Maven 万无一失 插件接下来破坏了构建;它在抱怨不能 解析JDK的版本。我通过重新定义覆盖了版本 插件版本的属性: 2.21.0.

这里的重要部分是我认为更新到更高版本的 Surefire,如 cmets 中所述。截至 2018 年 10 月,current version2.22.1

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
</plugin>

【讨论】:

  • 确实,将surefire版本更改为2.21.0可以让Maven生命周期项install成功完成。
【解决方案2】:

Answer by Maarten 是正确且重要的。

将编译器源/目标设置为10

除了更新版本maven-surefire-plugin 的答案的解决方案之外,要在 Java 10 上运行基于 Maven“快速启动”原型的项目,您需要将 POM 文件更改为 指示 Java 10 将由编译器

改变这个:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
</properties>

将出现的1.7 对替换为10

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>10</maven.compiler.source>
    <maven.compiler.target>10</maven.compiler.target>
</properties>

【讨论】:

    猜你喜欢
    • 2015-07-13
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    相关资源
    最近更新 更多