2011-06-03 13 views
12

Definiuję zależność w pom.xml w projekcie Maven 3. Zależność jest następujący:Dlaczego maven szuka artefaktu w złym repo?

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

Repostory pom opisano w sposób następujący:

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

artefaktu jest faktycznie obecny w repozytorium. It's easy to check. Mimo to Maven próbuje uzyskać artefakt od repo1.maven.org. Co może być tego przyczyną? Może popełniam jakiś poważny błąd przy definiowaniu dostępu do repozytorium? Inne zależności wydają się dobrze.

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) 

Odpowiedz

17

repository które zostały zdefiniowane służy do zależności, ale nie dla plugins. Stąd błąd.

Aby rozwiązać ten problem, trzeba zdefiniować pluginRepositories:

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

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

na to, gdzie należy określić - w pom.xml lub settings.xml, przeczytaj this SO post.

1

Trzeba sprawdzić Maven settings.xml (poszukaj w folderze Maven: M2_HOME/conf).
Domyślne repozytoria są tam definiowane, a centralne repozytorium Maven ma pierwszeństwo.

Zdefiniuj w repozytorium Maven na settings.xml tak:

<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> 

Możesz może zastąpić domyślną lokalizację centralnego repozytorium Maven z Ciebie, jeśli nie chcesz zrobić wiele konfiguracji.

Pozdrawiam!

Powiązane problemy