Deshabilitar el repository central de Maven

La política de mi empresa no ve con buenos ojos los artefactos que se descargan automáticamente (tienen que ser aprobados), así que para poder usar Maven, necesito deshabilitar el acceso al repository central de Maven.

En otras palabras, no quiero que Maven intente descargar desde central.

Sé cómo configurar un repository local (en red o no), mi idea es usar una máquina “bendecida” para actualizar el repository local.

PD: podría bloquear solicitudes a nivel proxy / red, pero estoy preguntando cómo hacerlo con la configuración de Maven.

ACTUALIZACIÓN Finalmente descubrí cómo hacerlo. En el hogar de maven, en el directorio conf hay un settings.xml global. Puede establecer un mirror en central que apunta a algún servidor interno o simplemente anular su definición.

Convenido. No se deben permitir descargas directas desde repositorys externos en las versiones de lanzamiento.

La respuesta específica a su pregunta es la segunda parte de mi respuesta 🙂

Configurar un administrador de repository

Recomiendo configurar un administrador de repository local de Maven. Buenas opciones son las siguientes:

  • Nexo
  • Artifactory
  • Archiva

Todos estos son capaces de actuar como un proxy de almacenamiento en caché para las jarras centrales Maven disponibles externamente.

También podría estar interesado en la versión de profesión de Nexus. Incluye un paquete de Adquisiciones para administrar bibliotecas externas. También proporciona complementos de Maven para gestionar de forma centralizada el archivo de configuración de Maven, que es la segunda parte de mi respuesta …

Configuración local de Maven

Actualice el archivo de configuración ubicado en el siguiente directorio:

$ HOME / .m2 / settings.xml

Especifique que todas las solicitudes centrales se deben redirigir al repository local de Maven:

  ...   central-proxy Local proxy of central repo http:///central central   ...  

Encontré útil la página Configuración de resolución de artefactos . Establece lo siguiente sobre el “mirror any” -setup.

No use “mirror any” por sí mismo, como su única regla de resolución. Úselo para hacer cumplir cualquier resolución de artefactos que se haga estrictamente a través de Artifactory. La configuración de proxying “espejo cualquiera” funciona para repositorys definidos. Reemplazará, pero no ocultará, los repositorys centrales e instantáneas incorporados, a menos que el usuario lo invalide. Define una regla de proxying de grano grueso que no diferencia entre lanzamientos e instantáneas, y confía en los repositorys definidos para hacer este filtrado de resolución.

El Super POM de Maven define el repository central. Aquí se explica cómo puede anular el repository central y el repository de complementos para versiones e instantáneas:

   central http://repo1.maven.org/maven2  false   false      central http://repo1.maven.org/maven2  false   false    

Por supuesto, debe tener un reemplazo configurado, como se establece en la respuesta aceptada.

En el caso de un repository de toda la compañía que debe manejar todas y cada una de las solicitudes de artefactos, puede configurar un único repository para reflejar todo en su $MAVEN_HOME/conf/settings.xml :

  internal-repository Maven Repository Manager running on repo.mycompany.com http://repo.mycompany.com/proxy *  

Fuente

La forma más simple es usar el parámetro -o que le dice a maven que se ejecute en modo fuera de línea. Por supuesto, deberá asegurarse de que su repository local tenga todo lo que necesita, pero esto al menos soluciona cualquier problema de seguridad que pueda tener con la conexión automática a un repository no aprobado.

Parece que alguien está intentando activamente hacer cumplir su política de gobierno de código abierto. Eso es bueno escuchar.

De acuerdo con el otro comentario aquí sobre el uso de un administrador de repository interno para alojar los componentes necesarios para Maven.

Como menciona Rory, debe asegurarse de tener todo lo que necesita en ese repository antes de detener el acceso a Maven Central (The Central Repository) o cualquier otro repository público de código abierto.

Mark hace una buena observación sobre las capacidades de adquisición de Nexus. Una vez que el administrador de repo interno esté configurado con todos sus componentes “aprobados”, también puede activar la característica Nexus Repository Health Check (es gratis), que informa sobre todas las licencias de componentes, vulnerabilidades de seguridad conocidas, etc. para componentes en tus repositorys

Divulgación completa, trabajo para Sonatype.

En el pasado, descubrí que la solución más robusta es anular manualmente los repositorys integrados. Encontré este enfoque mejor que cambiar el POM principal, settings.xml, mirror o profiles. Para todos los proyectos internos, ponga debajo de la configuración en su POM.

   central http://internalrepo  false    snapshots http://internalrepo  false      central http://internalrepo  false    snapshots http://internalrepo  false    

Tuve el mismo problema pero con otra causa. La solución fue desactivar Avira Browser Protection (en alemán Browser-Schutz). Tomé la solución de m2e no puede transferir metadatos de nexus, pero la línea de comandos de maven puede .