Подтвердить что ты не робот

Почему maven ищет артефакт в неправильном репо?

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

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

Репостория описана в pom следующим образом:

<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)
4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

Определите свой репозиторий в Maven 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 по умолчанию, если вы не хотите выполнять большую конфигурацию.

Ура!