Отключить зеркало настроек maven через локальный pom

#java #maven

#java #maven

Вопрос:

В моем maven settings.xml следующий фрагмент:

 <mirrors>
    <mirror>
        <!--This sends everything to our company mirror -->
        <id>nexus</id>
        <mirrorOf>*</mirrorOf>
        <url>[company-mirror]</url>
    </mirror>
</mirrors>
  

Это отправляет все на зеркало нашей компании, и если это не удается разрешить, мы получим это из репозитория maven.

Теперь мы также получаем исправления ошибок от поставщика одной из наших технологий через их maven nexus. Проблема в том, что зеркало нашей компании автоматически не запрашивает эту связь, я могу легко предоставить следующее зеркальное редактирование в settings.xml:

 <mirrors>
  <mirror>
    <id>[vendor-id]</id>
    <mirrorOf>[vendor-mirror]</mirrorOf>
    <url>[vendor-url]</url>
 </mirror>
 <mirror>[company-mirror-settings]</mirror>
</mirrors>
  

И тогда он будет запрашивать нормально, но мы не можем этого сделать для сервера сборки, поддерживаемого нашей компанией, который просто запрашивает зеркало компании.

Есть ли способ сделать это в нашем локальном pom.xml / project, не затрагивая никаких внешних настроек?

Я попытался выполнить следующее в нашем pom.xml но это не сработало:

 <project>
...
<repositories>
    <repository>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <id>[vendor-id]</id>
        <name>[vendor-name]</name>
        <url>[vendor-url]</url>
    </repository>
</repositories>
...
</project>
  

запуск mvn clean install выдает следующую ошибку:

 [ERROR] Failed to execute goal on project <project-name>: Could not resolve dependencies for project <project-name>:jar:1.2.0-SNAPSHOT: Coul
d not find artifact <vendor-dependency> in <company-mirror>
  

Комментарии:

1. Попросите администратора Nexus добавить прокси в vendor-url группу репозиториев, обслуживаемую company-mirror

2. Насколько я знаю, фрагмент кода, который вы поместили в конце своего вопроса, должен был сработать. Куда вы поместили это в свой POM? (Это должно быть под <project> .) Что вы заметили в выводе Maven, когда он пытается получить артефакты, которые можно найти только в этом reportsitory?

3. @rkosegi Я уже сделал это, но требуется некоторое время, прежде чем это будет реализовано, и было бы полезно, если бы мы могли отредактировать его в pom.xml .

4. @KevinLH Я поместил его под тегом <project>, я отредактирую вопрос, чтобы прояснить это. Я также помещу вывод maven в вопрос

Ответ №1:

Определение зеркал в settings.xml допускает перегрузку репозитория по умолчанию central , а также любого репозитория, определенного в POMS. Как следствие, если ваш сервер сборки использует файл настроек с репозиторием, управляемым вашей компанией, определенным как <mirrorOf>*</mirrorOf> , он будет использовать его для каждого отдельного репозитория, определенного POM, и в основном игнорировать эти определения.

Таким образом, settings.xml используемый сервером сборки должен быть изменен таким образом, чтобы не все репозитории были зеркальными, или репозиторий, управляемый компанией, должен быть настроен на зеркальное отображение репозитория поставщика.

Документация Maven: Использование зеркал для репозиториев