Фон
В maven артефакт может объявлять зависимость с помощью
<optional>true</optional>
что означает, что зависимость не требуется, но может быть использована, если присутствует.
Состояние модульной системы, похоже, указывает, что модуль может читать только модули, которые ему необходимы.
Вопросы
- Система Java 9 действительно не поддерживает дополнительные зависимости?
- Почему бы и нет?
- Какие альтернативы факультативным зависимостям предоставляет система модуля Java 9?
Использовать случай
У меня есть структура, которая объединяет различные библиотеки, которые могут или не могут использоваться приложением. В настоящее время эта структура представляет собой единый JAR, который отражает путь к классам для пропуска кода интеграции для отсутствующих библиотек.
Я думаю, мы могли бы разделить это на отдельный модуль для каждой конфигурации, но это вызовет комбинаторный взрыв в количестве JAR, потому что нам потребуется не только отдельный JAR для каждой необязательной зависимости, но и отдельный JAR для большинства пар дополнительных зависимостей...