#java #maven #build #dependency-management
#java #maven #сборка #управление зависимостями
Вопрос:
Одна и та же зависимость объявлена с помощью no <type>
и with <type>test-jar</test>
в двух разных проектах, над которыми я работаю. Однако мне не удалось найти надлежащего объяснения того, что это значит.
Ответ №1:
Обычно тестовые классы не упаковываются в jar; они выполняются во время сборки, а затем экспортируются только основные классы.
Однако, есть некоторые случаи, когда вы по какой-то причине хотите экспортировать тестовые классы, и вы можете упаковать их в test-jar
. Примером того, когда вы могли бы сделать это, является наличие интеграционных тестов (таких как REST или Selenium), которые требуют, чтобы ваше приложение было упаковано и развернуто в промежуточную среду. Ваш сервер CI может развернуть jar
, а затем получить test-jar
и запустить из него тестовые классы.
Комментарии:
1. Итак, когда мой проект объявляет зависимость от артефакта с типом
test-jar
, это означает, что он зависит не от основных классов, а также от тестовых классов артефакта?2. @akaRoga Правильно. Возможно, например, существует абстрактный базовый класс для тестов Selenium или что-то, что он использует.
3. Это также хорошо объяснено здесь maven.apache.org/ref/3.6.1/maven-model/maven.html#dependency и содержит ссылку на то, где описано сопоставление, предоставляемое обработчиком артефактов по умолчанию (
dependency type <-> artifact definition
) maven.apache.org/ref/3.6.1/maven-core/artifact-handlers.html