Не удалось передать артефакт. Попытка загрузки из центрального репозитория вместо объявленного в pom

#java #maven #pom.xml

#java #maven #pom.xml

Вопрос:

У меня действительно маленький pom.xml

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>groupId</groupId>
    <artifactId>myApp</artifactId>
    <version>1.0-SNAPSHOT</version>

    <repositories>
        <repository>
            <id>my-nexus</id>
            <name>my-nexus</name>
            <url>https://nexus.mynexus.com/nexus/public/</url>
        </repository>
        <repository>
            <id>second-nexus</id>
            <name>second-nexus</name>
            <url>http://second-nexus.mynexus.com:8081/nexus/repo/releases</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc7</artifactId>
            <version>12.1.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.8.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.5</version>
        </dependency>
    </dependencies>
    
</project>
 

однако, когда я пытаюсь mvn clean , я получаю сообщение об ошибке: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): Transfer failed for https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom но почему он вообще ищет что-либо в центральном репозитории maven, если я дал ему два других nexuses, из которых следует извлечь артефакты?

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

1. настройте диспетчер репозиториев в вашем settings.xml файле вместо pom.xml досье… maven.apache.org/settings.html

2. @khmarbaise значит, всем в проекте нужно изменить settings.xml файл? Разве невозможно переопределить репозитории в pom.xml ? : O

3. Значит, все разработчики настроили все в pom-файлах? Не очень хорошая идея … лучше провести одну очистку и правильно настроить ее на settings.xml и очистите конфигурацию… и удалите эту часть инфраструктуры из вашего файла pom … также ее можно правильно настроить в вашем ci, например, Jenkins, Drone, что бы вы ни использовали…

4. @khmarbaise, я не уверен, правильно ли я понимаю — идеальный мир для меня — это то, что разработчики, создающие проект (в данном примере я), могут настраивать репозитории, из которых будут взяты артефакты pom.xml , поэтому следующий разработчик просто клонирует проект mvn clean install и все. Почему всем нужно менять свои settings.xml файл для запуска этого проекта? Что, если другой разработчик будет использовать другие репозитории в settings.xml ? Снова всю команду нужно изменить settings.xml ? Я вижу гораздо больше недостатков, чем преимуществ от этого решения. Когда мы настраиваем его в pom.xml задействован только один разработчик, а не вся команда

5. В корпоративной среде это не имеет смысла … следует использовать только один менеджер репозитория, и не каждый разработчик должен иметь возможность просто использовать другой репозиторий со всей планеты (всевозможные последствия для безопасности и т.д.)… кроме того, зачем это делать разработчику mvn clean install ? Обычно mvn clean verify этого достаточно. Развертывание во внутреннем диспетчере репозиториев должно выполняться решением CI. кроме того, в мире OSS вы должны настроить необходимые репозитории в settings.xml … например, центральный не позволяет делать так … и т.д.