2011-02-09 27 views
14

En mi experta ~ ./ m2/settings.xml he definido un espejo y algunos repositorios:.Howto repositorio espejo desactivar en la configuración de Maven

<mirrors> 
    <mirror> 
    <id>someid</id> 
     ..... 
    </mirro> 
</mirrors> 
... 

<profiles> 
    <profile> 
     <id>default</id> 
      <activation> 
        <activeByDefault>true</activeByDefault> 
       </activation> 
       <repositories> 
      <repository>                 <id>repo....</id> 
.... 

     </profile> 
</profiles> 

Esto funciona bien.

Hay algunos proyectos en los que quiero desactivar el espejo y el perfil predeterminado. Sé que puedo definir un perfil separado para los repositorios, pero no sé cómo puedo decirle al plugin maven eclipse que no use el perfil predeterminado o un perfil específico. También: ¿cómo puedo cambiar el espejo para un proyecto?

Respuesta

2

Copia el archivo settings.xml, quite la entrada mirror y decirle a Maven para usar con la opción de línea de comandos --settings archivo.

uso de XSLT o una herramienta de línea de comandos como XMLStarlet para automatizar el proceso:

xmlstarlet ed -N 's=http://maven.apache.org/SETTINGS/1.0.0' --delete "//s:mirror" settings.xml 

imprime un nuevo archivo para settings.xmlstdout que no contiene ningún ajuste de espejo.

+2

Si una herramienta basada en XSLT no está disponible, en la sed: 'sed -e settings.xml "/ /,/<\/mirrors>/d"' – pimlottc

1

Las entradas en settings.xml se aplican a todos los proyectos maven en el sistema y, por lo tanto, no están diseñadas para adaptarse a proyectos individuales.

Si desea que diferentes proyectos tengan diferentes profiles, debe especificarlos en el proyecto pom. No necesita tener la sección <profiles> en su ~/m2/settings.xml.

En cuanto a <mirrors> se aplican a repositories que desea reflejar. Puede elegir qué repositorios deben duplicarse, pero no qué proyectos deben usar el espejo y cuáles no. Siempre puede ejecutar el proyecto en el modo offline, si no desea que se descargue desde un repositorio remoto.

8

Desafortunadamente, esto es imposible con configuraciones individuales.xml. Hay una solicitud de función en Maven JIRA, ¡vote por esto!

solución consiste en tener dos settings.xml y experta en funcionamiento con la configuración seleccionada:

mvn -s my-settings.xml 
+2

Wow, la solicitud de función citado ya está abierto durante 7 años. – asmaier

+1

Buena idea ... ¡Esta respuesta ahorra mucho tiempo! Gracias. – smilyface

0

múltiple settings.xml no es necesario que creo que hacer esto.

Es posible controlar espejos utilizando perfiles.

Puedo utilizar una propiedad de mi repositorio id por ejemplo un sufijo ${repo-suffix}

$ mvn help:effective-pom | grep "<distributionManagement>" -A 3 
    <distributionManagement> 
    <repository> 
     <id>deployment${repo-suffix}</id> 
     <name>Internal Releases</name> 

Entonces puedo añadir repo-suffix a un perfil, por ejemplo, para dar una buena relación calidad -1.

<profile> 
    <id>my-profile</id> 
    <activation> 
    <activeByDefault>true</activeByDefault> 
    </activation> 
    <properties> 
     <repo-suffix>-1</repo-suffix> 
     ... 

De esta manera, ahora tengo una identificación de depósito definida dinámicamente en archivos pom.

$ mvn help:effective-pom | grep "<distributionManagement>" -A 3 
    <distributionManagement> 
    <repository> 
     <id>deployment-1</id> 
     <name>Internal Releases</name> 

Para estos deployment-1 este repositorio puedo definir espejos en mi settings.xml. Esto es lo mismo que poder poner un espejo en un perfil.

Cuestiones relacionadas