Что означает тег внутри тега ?

#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