2009-06-14 50 views
10

Tengo un par de preguntas sobre las mejores prácticas de maven y la administración de repositorios.Mejores prácticas de Maven

En mi entorno, no quiero ir al repositorio central de maven sino almacenar todo en un repositorio interno. ¿Debo simplemente exigir a cada usuario que coloque la información en el archivo settings.xml que inhabilita el uso de las instantáneas o versiones del repositorio maven o debería estar en un archivo POM?

Además, me gustaría que todos los usuarios accedan al mismo repositorio corporativo. ¿Debería esta información del repositorio estar en el pom o en settings.xml? Si está en el pom, ¿cómo sabrá maven para ir al repositorio ya que necesita saber dónde está el repositorio para obtener el pom?

Respuesta

6

En un proyecto grande, es mejor tener varios repositorios.

  1. La compañía proxy/caché almacenará frascos donwloaded localmente para que la empresa no se hace depender de la disponibilidad de sitios externos. Se accede como un repositorio normal, pero es una puerta de acceso a los repositorios públicos.

  2. El repositorio de la compañía para las bibliotecas publicadas está restringido, contiene bibliotecas internas. Estos son marcos que se "promueven" desde los repositorios de proyectos hasta el repositorio de la empresa porque pueden ser útiles para todos los proyectos.

  3. Los repositorios de proyectos contienen artefactos utilizados por el proyecto. Puede contener artefactos de subproyectos, etc. Todos los desarrolladores de un proyecto deberían poder publicar algo aquí.

Donde pone la configuración es una cuestión de gusto. Puse estas cosas en settings.xml. Porque si la dirección de los repositorios internos cambia, de lo contrario tendrías que modificar los proyectos.

+0

Todo esto es correcto - Me gustaría recomendar buscando en Nexus (http://nexus.sonatype.org/) para una buena solución para todos lo anterior. –

+0

Gracias. He estado utilizando Archiva de Apache por su simplicidad, pero también estaré investigando Nexus. Estamos en un proyecto bastante pequeño en este momento, solo tratamos de poner estas cosas en su lugar desde el principio. –

+1

+1 en Nexus. Es muy fácil de configurar y operar. –

10

Paso uno: Instale Nexus en un servidor en su LAN. Es excelente, fácil de instalar (¡en realidad, solo un par de minutos!) Y sólido. Tenemos ~ 50 ingenieros y muchos servidores de CI actuando todo el día y ha estado estable durante muchos meses. Digamos que lo instaló en un servidor llamado "nexus.local" en su DNS.

Paso dos: Copia el settings.xml de http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html, fijar el nombre de host si es necesario, se comprometen a su sistema de código fuente, y decir a todos sus desarrolladores para copiarlo en su ~/.m2/settings.xml.

Paso tres: Configure correctamente el pom.xml de su proyecto. Usted querrá un "POM padres" que define una sección "distributionManagement" que se ve algo como esto:

<distributionManagement> 
    <snapshotRepository> 
     <id>nexusSS</id> 
     <name>Nexus Snapshot Repository</name> 
     <url>http://nexus.local:8081/nexus/content/repositories/snapshots</url> 
    </snapshotRepository> 
    <repository> 
     <id>nexusRelease</id> 
     <name>Nexus Release Repository</name> 
     <url>http://nexus.local:8081/nexus/content/repositories/releases</url> 
    </repository> 
    </distributionManagement> 

Paso cuatro: Activar "mvn despliegan" - ir a la interfaz de usuario de Nexus (algo así como http://nexus.local:8081/nexus), haga clic en usuarios, haga clic en "implementación" y asígnele una contraseña. A continuación, edite su ~/.m2/settings.xml y añadir lo siguiente:

<settings> 
    ... 
    <servers> 
    <server> 
     <id>nexus</id> 
     <username>deployment</username> 
     <password>PASSWORD</password> 
    </server> 
    </servers> 
</settings> 

Compruebe que funciona mediante la ejecución de "mvn despliegan", y que debería haber instalado los artefactos de su proyecto en Nexus.

Paso cinco: Lea este excelente documentación para el experto: http://www.sonatype.com/products/maven/documentation/book-defguide

+2

Para el "Paso cuatro", ¿no desea que la ID del servidor coincida con la del ID en la gestión de distribución en el paso tres? – Nicholas