Ответ 1
Вы проверили эту документацию. Он описывает ваш прецедент очень хорошо. Маркировка зависимостей как необязательная не будет разрешать их как транзитивные зависимости в приложении, использующем вашу библиотеку (даже если область compile
).
В отличие от <scope>provided</scope>
, который используется для требуемых зависимостей, которые будут предоставляться средой выполнения, зависимость <optional>true</optional>
необязательно должна быть обязательной (идея состоит в том, что некоторые из зависимостей используются только для определенных функций в проекте и не понадобится, если эта функция не используется.).
Если проект, использующий вашу библиотеку, будет использовать любую функциональность, предоставляемую необязательными зависимостями, проект должен объявить эти зависимости самостоятельно.
Поскольку ваша конфигурация кажется правильной для меня, я не знаю причины того, что происходит. Возможно, ваши необязательные зависимости будут разрешены другими библиотеками в версиях, которых вы не ожидаете. Это, конечно, может вызвать проблемы.