В настоящее время я тестирую перенос приложения Java 8 на Java 9/Jigsaw, используя jdk-9 + 149.
Проект был выложен в стандартном макете каталога Maven, т.е. имеет src/main/java
, src/test/java
и т.д.
Как только я добавлю module-info.java
в src/main/java
, maven-компилятор-плагин не запускает исключение NullPointerException. Это связано с тем, что он ожидает найти информацию о модуле для каталога test
. Итак, насколько я могу судить, варианты:
- сохранить тестовые классы в отдельном модуле, что означает, что они могут получить доступ только к экспортированным пакетам основного модуля.
- переместить тестовые классы в основной модуль вместе с источниками, что означает, что основному модулю нужны тестовые зависимости.
Очевидно, что ни один из этих вариантов не представляется желательным, поэтому я предполагаю, что рекомендуется использовать модули Jigsaw в проекте Maven. Неохотно я не мог найти рекомендаций и примеров.
EDIT: добавление некоторой информации, которую я не учитывал при публикации вопроса (извините)
- NullPointerException, с которым я столкнулся.
- Maven 3.3.9
- maven-compiler-plugin 3.6.0
- исходная и целевая конфигурация: 9