#maven #dependencies
#maven #зависимости
Вопрос:
Я работаю над проектом, который использует maven для сборки. То, что я пытаюсь сделать, это пропустить тестовую зависимость. В основном запуск сборки maven без наличия артефакта в моем репозитории maven.
например
<artifactId>example</artifactId>
<scope>test</scope>
Это из файла pom моего проекта, и я должен maven построить свой проект без использования примера артефакта.
Я искал решение, такое как использование «-DskipTests= true» или «-Dmaven.test.skip= true». В моем случае они пропустили запуск тестов, но он по-прежнему жалуется на отсутствие файла зависимостей.
Кто-нибудь знает способ запустить сборку maven без необходимости иметь тестовый артефакт в репозитории maven?
Спасибо.
Комментарии:
1. 1. Та же проблема. Может быть, есть способ явно исключить одну тестовую зависимость из командной строки (потому что у меня есть только одна, которая вызывает здесь реальные проблемы)?
Ответ №1:
См. https://issues.apache.org/jira/browse/MNG-4192 . Я думаю, что единственный способ обойти это — переместить зависимость в тестовой области в профиль Maven.
Вот пример:
<profile>
<id>test-with-extra-dependency</id>
<dependencies>
<dependency>
<groupId>org.example.groupid</groupId>
<artifactId>artifact-id</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>
</profile>
Теперь вы должны иметь возможность запускать сборку без тестов:
mvn clean install -Dmaven.test.skip=true -DskipTests=true
После этого вы можете запускать тесты с включенным профилем:
mvn test --activate-profiles test-with-extra-dependency
Я бы не советовал этого, но это может быть полезно в случае циклической зависимости между текущим модулем и тестовой зависимостью, т. Е. Вы можете создать модуль, затем создать тестовую зависимость, используя результат сборки, и, наконец, протестировать модуль с тестовой зависимостью. Если вы обнаружите, что хотите это сделать, попробуйте реструктурировать свой проект, чтобы устранить циклическую зависимость (например, переместив тесты в третий модуль).