Встреча с maven-plugin-testing-harness Во время выполнения теста фабрики разъемов недоступны.

При использовании, во время выполнения теста возникает следующая ошибка. Похоже, что тест не может устранить артефакты из репозитория Maven при загрузке файла в рамках теста. URL-адрес репозитория действителен, и артефакт существует в репозитории.

Мы не можем просто добавить зависимость к нашему проекту.файл, поскольку тест ищет более старую версию, которая будет конфликтовать с нашей текущей версией. Мы также столкнулись с этим, когда плагины, настроенные в наших тестовых файлах pom, используют другую версию зависимости, которая уже есть в нашем проекте pom.

[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-primerpom запускает загрузку необходимых зависимостей:

      <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>
Другие вопросы по тегам