2011-06-03 4 views
12

Я определяю зависимость в pom.xml в проекте Maven 3. Зависимость заключается в следующем:Почему maven ищет артефакт в неправильном репо?

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

Repostory описан в ПОМ следующим образом:

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

артефакт действительно присутствует в хранилище. It's easy to check. Несмотря на это, 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) 

ответ

17

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

Для решения этой проблемы необходимо определить pluginRepositories:

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

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

Как туда, где вы должны указать - в pom.xml или settings.xml, читайте this SO post.

1

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

Cheers!

Смежные вопросы