#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.html2. @khmarbaise значит, всем в проекте нужно изменить
settings.xml
файл? Разве невозможно переопределить репозитории вpom.xml
? : O3. Значит, все разработчики настроили все в 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 … например, центральный не позволяет делать так … и т.д.