2011-02-11 20 views
14

Normalmente, tengo el siguiente espejo configurado en mi Maven settings.xmlmaven espejos repositorio

<mirror> 
    <id>internal-repository</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
    <mirrorOf>*</mirrorOf> 
</mirror> 

Mi entendimiento es que este espejo impide Maven de la descarga de las dependencias de la Internet, es decir, sólo los buscará en este interno repositorio.

Sin embargo, cada vez que quiero agregar una dependencia que no está en este repositorio interno, tengo que comentar el texto anterior y añadir lo siguiente al del proyecto pom.xml

<repository> 
    <id>internal-repository</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
</repository> 

Cuando hago estos cambios Maven comprobará las dependencias en el repositorio local, y si no se encuentra, descárguelos de Internet al repositorio local. Una vez que tengo las dependencias que necesito, luego vuelvo a cambiar mi configuración.

¿Hay alguna forma de obtener el comportamiento que deseo? Siempre compruebe el repositorio interno, luego los repositorios públicos (Internet) sin tener que agregar el <repository> a cada proyecto pom.xml?

Idealmente me gustaría especificar este repositorio una vez en settings.xml, pero parece que solo puede configurar espejos allí.

Respuesta

0

Agregue la sección de repositorio al super pom. Y deje que todos los proyectos se extiendan desde el super pom.

Así que cada pom del otro proyecto tendrá una sección principal para extender desde el super pom de esta manera.

<parent> 
    <groupId>com.ddd.ddd.ddd</groupId> 
    <artifactId>ddd-ddd-parent</artifactId> 
    <version>1.1.1-SNAPSHOT</version> 
    <relativePath>./config/superpom/pom.xml</relativePath> 
</parent> 

De esta manera puede tener la sección del repositorio solo en un archivo pom, esa es su super pom. También puede agregar cualquier dependencia que sea común a todos los proyectos aquí, como junit, log4j y cosas así.

En su archivo settings.xml. Puede agregar esto para configurar su repositorio local.

<localRepository>C:/myBox/maven.repo</localRepository> 
14

Se podría tratar de configurar experto para usar el espejo sólo para el repositorio central o excluir el repositorio identificado por alguna identificación.

<mirror> 
    <id>internal-mirror</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
    <mirrorOf>central</mirrorOf> 
</mirror> 

O

<mirror> 
    <id>internal-mirror</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
    <mirrorOf>*,!internal-repository</mirrorOf> 
</mirror> 

Los ejemplos fueron adaptados de maven settings y guide to mirror settings.

1

Parece que es posible que no haya configurado o utilizado el espejo correctamente.

Idealmente, lo que especifique como el espejo debe ser repository manager, que debe descargar de forma transparente la dependencia solicitada de varios repositorios en Internet y almacenarla en caché, lo que permite que se realicen descargas posteriores desde el espejo.

2

Esta pregunta es bastante antiguo, pero de todos modos:

Ponga una <profile> en la configuración.XML que especifica su repositorio interno utilizando el elemento <repository>

... 
    <profile> 
     <id>devel-repos</id> 

     <repositories> 
      <repository> 
       <id>repo-release</id> 
       <url>http://repohost:repoport/path/to/release/repo</url> 
      </repository> 
      <repository> 
       <id>repo-snapshot</id> 
       <url>http://repohost:repoport/path/to/snapshot/repo</url> 
      </repository> 
     </repositories> 
    </profile> 
... 

Luego que el modo anterior como <activeProfile>. Esto activará el perfil para cada invocación de maven.

... 
<activeProfiles> 
    <activeProfile>devel-repos</activeProfile> 
</activeProfiles> 
... 

Esto no evita múltiples definiciones del repositorio, pero le da lo más importante: todo está centralizado en settings.xml y sus pom.xml s están limpias (y portátiles).

0

Eliminando la configuración de los espejos del settings.xml y poniendo el código siguiente funcionado para mí.

<profiles> 
    <profile> 
     <id>profile-1</id> 
     <repositories> 
      <repository> 
       <id>internal-repository-1</id> 
       <url>http://build.idaho.local/wtp_repository</url> 
      </repository> 
     </repositories> 
    </profile> 
</profiles> 
<activeProfiles> 
    <activeProfile>profile-1</activeProfile> 
</activeProfiles> 
Cuestiones relacionadas