2011-06-03 15 views
12

Estoy definiendo una dependencia en pom.xml en un proyecto de Maven 3. La dependencia es como sigue:¿Por qué maven busca artefactos en el repositorio incorrecto?

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

Repostory se describe en pom como sigue:

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

Artefacto está de hecho presente en el repositorio. It's easy to check. A pesar de eso, Maven está tratando de obtener el artefacto del repo1.maven.org. ¿Cuál podría ser el motivo de esto? ¿Puedo cometer un error crucial al definir el acceso al repositorio? Otras dependencias parecen estar bien.

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) 

Respuesta

17

El repository que ha definido se utiliza para las dependencias, pero no para plugins. De ahí el error.

Para hacer frente a esto, es necesario definir pluginRepositories:

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

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

En cuanto a dónde se debe especificar - en pom.xml o settings.xml, leer this SO post.

1

Es necesario comprobar su experto settings.xml (Mira en la carpeta Maven: M2_HOME/conf).
Los repositorios predeterminados se definen allí mismo y el repositorio central de Maven tiene prioridad.

definir su repositorio de Maven de settings.xml así:

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

Puede tal vez sobrescribir la ubicación Maven repositorio central por defecto con el suyo si usted no quiere hacer mucho configuración.

¡Salud!

Cuestiones relacionadas