Покрытие мавен...
Поскольку вы объявляете, что ваш проект зависит от надувного замка в вашем maven pom, любой, кто использует maven для зависимости от вашей библиотеки, по умолчанию будет использовать надувной замок как транзитивную зависимость.
Вы должны установить соответствующую область для своих зависимостей, например. скомпилируйте материал, необходимый во время компиляции и выполнения, проверьте зависимости, необходимые только при тестировании и предоставленные для материалов, которые, как вы ожидаете, будут предоставлены средой.
Вопрос о том, будут ли зависимости вашей библиотеки упакованы в зависимые проекты при их сборке, зависит от того, как эти проекты настроены, и установка областей повлияет на поведение по умолчанию.
Например, упаковка типа jar по умолчанию не включает зависимости, тогда как война будет включать те, которые находятся в области компиляции (но не тестируются или не предоставляются). Цель дизайна здесь заключалась в том, чтобы плагины упаковки вели себя наиболее часто требуемым образом без необходимости настройки, но, конечно, плагины упаковки в maven можно настроить для другого поведения, если это необходимо. Сами плагины, которые занимаются упаковкой, хорошо задокументированы на сайте apache maven.
Если пользователи вашей библиотеки вряд ли будут использовать maven для создания своих проектов, можно использовать плагин Shade, который позволит вам создать «uber-jar», содержащий все зависимости, которые вы хотите. Вы можете настроить определенные включения или исключения.
Это может быть проблематичным способом доставки, например, когда ваша библиотека включает зависимости, версии которых конфликтуют с прямыми зависимостями использующих ее проектов, т. е. они используют другую версию тех же библиотек, что и ваша.
Однако, если вы можете, лучше оставить это maven для управления, чтобы проекты, использующие вашу библиотеку, могли решить, хотят ли они ваших зависимостей или указать конкретные версии, дающие им большую гибкость. Это идиоматический подход.
Для получения дополнительной информации о зависимостях и областях действия в maven см. справочное руководство, опубликованное Sonatype.
person
Brian Smith
schedule
09.09.2011