В процессе создания module-info.java
для существующей служебной библиотеки (используя JDK 10.0.2 с источником и целью 10, IDEA 2018.2, Maven 3.5.4) я столкнулся со следующей проблемой:
Под src/main/resources/com/example/spring/config
У меня есть набор Spring XML, таких как:
SpringLoggingConfig.xml
SpringApplicationId.xml
Они правильно упакованы в банку во время упаковки. Однако при запуске Lifecycle->test
из меню IDE создание всех экземпляров ClassPathXmlApplicationContext
завершается неудачно, а перечисленные выше ресурсы не найдены. С другой стороны, при запуске отдельных тестов с использованием контекстного меню класса тестирования все работает нормально. (Возможно, это связано с тем, что в меню жизненного цикла используется плагин surefire, а в последнем режиме запускается junit напрямую -?)
Поработав некоторое время, я нашел решение, добавив строку
opens com.example.spring.config;
до module-info.java
(который IDEA помечает как пустой пакет, поскольку на самом деле во время компиляции такого пакета нет под src/main/java
.)
Мои вопросы,
- Это правильный подход?
- Если так, как это работает?
- Если нет, каково правильное решение?