Пропуск тестовой зависимости Maven

#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
  

Я бы не советовал этого, но это может быть полезно в случае циклической зависимости между текущим модулем и тестовой зависимостью, т. Е. Вы можете создать модуль, затем создать тестовую зависимость, используя результат сборки, и, наконец, протестировать модуль с тестовой зависимостью. Если вы обнаружите, что хотите это сделать, попробуйте реструктурировать свой проект, чтобы устранить циклическую зависимость (например, переместив тесты в третий модуль).