Встреча с maven-plugin-testing-harness Во время выполнения теста фабрики разъемов недоступны.
При использовании
Мы не можем просто добавить зависимость к нашему проекту.
[ERROR] Non-resolvable import POM: Could not transfer artifact ::pom:1.1.2 from/to repository (https://REDACTED VALID URL/): No connector factories available @ line 44,
column 19
at org.apache.maven.model.building.DefaultModelProblemCollector.newModelBuildingException(DefaultModelProblemCollector.java:197)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:568)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:454)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:267)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:173)
... 47 more
Затем тест завершается неудачей, поскольку Maven не может загрузить класс проекта Maven из-за этой ошибки.
В онлайн-руководствах говорится, что библиотеки коннекторов недоступны в
1 ответ
Решение, приведенное ниже, является скорее обходным путем, но позволяет нам двигаться вперед.
Мы добавили в наш проект новый модуль (например, ) и включили его в сборку перед нашим оспариваемым модулем. Затем мы добавили зависимости к этому модулю, что запускает загрузку в наш локальный репозиторий, чтобы необходимые артефакты Maven были доступны при запуске нашего теста. Этот уровень косвенности позволяет нам обойти конфликты версий, которые изначально не позволяли нам просто добавить в наш тестовый модуль.
Пример ниже (фактический набор изменений доступен на GitHub):
В родительский pom добавлен новый модуль:
<modules>
<module>test-primer</module>
<module>fermenter-mda</module>
</modules>
test-primer
pom запускает загрузку необходимых зависимостей:
<project>
...
<artifactId>test-primer</artifactId>
<name>Fermenter::Test Primer</name>
<description>A temp module to work around test dependency issues in fermenter-maven-plugin</description>
<!--
NB: Currently, the maven test harness needs access to a specific version of commons-io, among other dependencies,
but we leverage newer versions in fermenter-mda. As such, this is an ugly workaround that ensures that the
version is available in the .m2/repository of the local environment so that when the test runs, it
can be resolved. Because we are mocking the Maven plugin for testing, we cannot ignore or manually set
these dependencies via normal means.
-->
<build>
<plugins>
<plugin>
<groupId>org.technologybrewery.habushu</groupId>
<artifactId>habushu-maven-plugin</artifactId>
<version>2.4.1</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>