2011-06-03 19 views
12

Sto definendo una dipendenza in pom.xml in un progetto Maven 3. Dipendenza è la seguente:Perché Maven sta cercando artefatto nel repository sbagliato?

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

Repostory è descritto in pom come segue:

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

manufatto è effettivamente presente nel repository. It's easy to check. Nonostante ciò, Maven sta cercando di ottenere l'artefatto da repo1.maven.org. Quale potrebbe essere la ragione di questo? Forse commetto un errore cruciale nella definizione dell'accesso al repository? Altre dipendenze sembrano andare bene.

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) 

risposta

17

Il repository che avete definito viene utilizzato per le dipendenze, ma non per plugins. Quindi l'errore.

Per risolvere questo problema, è necessario definire pluginRepositories:

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

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

Quanto a dove è necessario specificare - in pom.xml o settings.xml, leggere this SO post.

1

è necessario controllare il vostro esperto di settings.xml (Guarda nella cartella Maven: M2_HOME/conf).
I repository predefiniti sono definiti lì e il repository centrale di Maven sta avendo la precedenza.

definire il tuo repository Maven di settings.xml come questo:

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

Si può forse sovrascrivere il Maven posizione predefinita repository centrale con il vostro se non si vuole fare molto di configurazione.

Cheers!

Problemi correlati