Запустить «быстрый старт» архетипа Maven в Java 10?

Когда я создаю новый проект IntelliJ 2018.1 из архетипа Maven maven-archetype-quickstart версии 1.3 с использованием Oracle 10.0.1 на macOS Sierra, я получаю эту ошибку при выполнении Maven install.

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test (default-test) on project h2e2: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test failed.: NullPointerException -> [Help 1]

Я запускаю это сразу после создания нового проекта. Пишу код нет. Я могу запустить строку по умолчанию:

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

… Выбрав Run 'App.main()' из контекстного меню, открытого в редакторе кода. Это работает, но Maven install не работает.

Выполнение clean и install на панели Maven IntelliJ не решает проблему.

Запустить «быстрый старт» архетипа Maven в Java 10?

Если я переключаю 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] BUILD SUCCESS

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

Если я верну этот параметр в Java 10, Maven install снова выйдет из строя с той же ошибкой.

Я использую внешний Maven 3.5.3, а не старую версию IntelliJ в комплекте, без особой причины.

Мои старые существующие проекты, основанные на Java 8, не имеют проблем. Моя единственная проблема - это попытка создать новые проекты quickstart на основе Maven с использованием Java 10.

Не работает ли он и с 2.21.0 of surefire?

Naman 04.05.2018 05:03

@nullpointer Я ничего не знаю о surefire. Мне просто нужен очень простой проект на основе Maven без излишеств. Я думал, что это цель архетипа quickstart.

Basil Bourque 04.05.2018 06:33

Не могли бы вы попробовать установить это свойство в вашем pom.xml: <maven-surefire-plugin.version>2.21.0</maven-surefire-plugin‌​.version> Также какая у вас java-версия в pom? По умолчанию используется архетип 1,7 ... `<maven.compiler.source> 1,7 </maven.compiler.source>` `<maven.compiler.target> 1,7 </maven.compiler.target>` Maven также использует Java 10 JDK? Вы можете проверить это, запустив mvn -X clean

Maarten 04.05.2018 07:12

@Maarten Как запустить mvn -X clean в IntelliJ IDE? Можно ли передать аргументы, такие как -X, в элементы жизненного цикла, такие как clean, на панели Maven в IntelliJ?

Basil Bourque 04.05.2018 07:22

Для Java 10 вам необходимо обновить плагин surefire / failsafe до версии 2.21.0 ....

khmarbaise 04.05.2018 07:55

@BasilBourque, я бы сделал эту командную строку. Это намного проще. Вы также можете создать конфигурацию запуска из шага «очистки» своего жизненного цикла и добавить -X в поле «Командная строка» в этой конфигурации запуска.

Maarten 04.05.2018 09:59
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
6
907
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Более поздняя версия maven-surefire-plugin

Похоже, архетип еще не обновлен для Java 10.

Согласно этому сообщению в блоге: http://joshlong.com/jl/blogPost/java-10.html, вы можете сделать следующее, чтобы запустить его ...

.... I want to use Java 10, though, so I opened the pom.xml file and changed the java.version property value to be 10. The Maven surefire plugin broke the build next; it was complaining about not being able to parse the version of the JDK. I overrode the version by redefining the property for the plugin's version: 2.21.0.

Важной частью здесь является обновление до более высокой версии surefire, как упоминалось в комментариях. По состоянию на 2018-10 год текущая версия - это 2.22.1.

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

Действительно, изменение верной версии на 2.21.0 позволяет успешно завершить выполнение элемента жизненного цикла Maven install.

Basil Bourque 04.05.2018 23:04

Ответ Маартена правильный и важный.

Установите источник / цель компилятора на 10

В дополнение к этому решению Answer, обновляющему версию maven-surefire-plugin, для запуска этого проекта Maven, основанного на архетипе «Quickstart» на Java 10, вам нужно будет изменить файл 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>

Другие вопросы по теме