在Java 10中运行Maven原型“quickstart”?

时间:2018-05-03 21:25:09

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

当我在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的执行默认测试。插件:maven-surefire-plugin:2.20.1:测试失败:NullPointerException - > [帮助1]

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

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

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

在IntelliJ的Maven窗格中执行cleaninstall无法解决问题。

enter image description here

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

  

[INFO] -------------------------------------------- ----------------------------

     

[INFO]建立成功

     

[INFO] -------------------------------------------- ----------------------------

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

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

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

2 个答案:

答案 0 :(得分:4)

maven-surefire-plugin

的更高版本

似乎Java 10尚未更新原型。

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

  

....我想使用Java 10,所以我打开了pom.xml文件   将java.version属性值更改为10. Maven surefire   插件打破了下一个构建;它抱怨不能   解析JDK的版本。我重新定义了这个版本   插件版本的属性:   2.21.0。

这里的重要部分是我认为更新到更高版本的surefire,如评论中所述。截至2018-10,current version2.22.1

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

答案 1 :(得分:0)

Answer by Maarten是正确且至关重要的。

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

除了该Answer的解决方案更新版本maven-surefire-plugin之外,要在Java 10上运行该基于Maven“ Quickstart”原型的项目,您还需要将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>