Почему Maven ищет артефакт в неправильном репо? - PullRequest
13 голосов
/ 03 июня 2011

Я определяю зависимость в pom.xml в проекте Maven 3. Зависимость выглядит следующим образом:

<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>el-impl</artifactId>
    <scope>runtime</scope>
    <version>2.2</version>
</dependency>

Хранилище описывается в пом следующим:

<repository>
    <id>java.net</id>
    <name>java.net</name>
    <url>http://download.java.net/maven/2</url>
</repository>

Артефакт действительно присутствует в хранилище. Это легко проверить . Несмотря на это, Maven пытается получить артефакт от repo1.maven.org. В чем может быть причина этого? Может быть, я сделал какую-то решающую ошибку при определении доступа к хранилищу? Другие зависимости, кажется, хорошо.

Plugin org.mortbay.jetty:maven-jetty-plugin:6.1.26 or one of its 
dependencies could not be resolved: Could not find artifact 
org.glassfish.web:el-impl:jar:2.2 
in central (http://repo1.maven.org/maven2)

Ответы [ 3 ]

17 голосов
/ 03 июня 2011

Определенный вами repository используется для зависимостей, но не для plugins. Отсюда и ошибка.

Чтобы решить эту проблему, вам нужно определить pluginRepositories :

<project>
    <!-- ... -->

    <pluginRepositories>
        <pluginRepository>
            <id>{repo.id}</id>
            <url>{repo.url}</url>
        </pluginRepository>
    </pluginRepositories>
</project>

Относительно того, где вы должны указать - в pom.xml или settings.xml, прочитайте этот пост SO .

1 голос
/ 03 июня 2011

Вам нужно проверить свой maven settings.xml (посмотрите в папке Maven: M2_HOME/conf).
Репозитории по умолчанию определяются там самим, и центральный репозиторий Maven имеет преимущество.

Определите свой репозиторий в Maven's settings.xml следующим образом:

<profiles>
<profile>
  ...
  <repositories>
    <repository>
      <id>Java Net</id>
      <name>Java Net</name>
      <releases>
        <enabled>false</enabled>
        <updatePolicy>always</updatePolicy>
        <checksumPolicy>warn</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
      <url>http://download.java.net/maven/2</url>
      <layout>default</layout>
    </repository>
  </repositories>
  <pluginRepositories>
    ...
  </pluginRepositories>
  ...
</profile>

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

Ура!

0 голосов
/ 26 ноября 2018

У меня была похожая проблема, однако другой разработчик настроил зеркало, в котором я просто скопировал и вставил в свой файл settings.xml. Изменение свойства mirrorOf для включения только определенных репозиториев сделало свое дело.

...