У меня есть библиотечный проект, в котором я рассматриваю возможность добавления некоторых зависимостей как необязательных, поскольку они потребуются только для проектов, компилируемых и работающих на JDK9 +.
Однако документация оопциональные зависимости не проясняют, возможно ли опционально зависеть от конкретной версии, т. е. могу ли я поместить в файл библиотеки pom что-то вроде
<dependency>
<groupId>com.foo</groupId>
<artifactId>dependency-a</artifactId>
<version>2.0</version>
<optional>true</optional>
</dependency>
И каким-то образом убедиться, что проекты, которые зависят от моей библиотеки итакже желание включить dependency-a
будет зависеть от версии 2.0.
Насколько я понимаю, установка dependency-a
в качестве необязательного означает, что проекты, зависящие от моей библиотеки, не будут транзитивно зависеть от нее, но они могут явнодобавьте его в свои собственные зависимости, если им нужны некоторые дополнительные (необязательные) функции в моей библиотеке.
Есть ли способ убедиться, что, если они хотят добавить dependency-a
, они зависят от конкретной версии?
Что бы произошло, если бы проект в зависимости от моей библиотеки имел
<dependency>
<groupId>com.foo</groupId>
<artifactId>dependency-a</artifactId>
<version>1.0</version>
</dependency>
И версию1.0 не был совместим с версией 2.0?
И если невозможно установить версию на необязательных зависимостях, какой смысл устанавливать версию для необязательной зависимости?
У меня также естьЯ искал плагин Maven Enforcer , который, кажется, способен обрабатывать подобные случаи, но мне было интересно, есть ли лучшее решение.