¿Cómo configuro Maven para el desarrollo fuera de línea?

¿Maven requiere una conexión a internet en algún momento para poder usarlo? ¿Qué significa específicamente obtener los complementos maven internos para comstackr, limpiar, empaquetar, etc.?

Puede ejecutar maven en el modo fuera de línea mvn -o install . Por supuesto, cualquier artefacto no disponible en su repository local fallará. Maven no se basa en repositorys distribuidos, pero ciertamente hacen las cosas más fluidas. Es por esta razón que muchas tiendas usan espejos internos que se sincronizan incrementalmente con los repositorys centrales.

Además, la mvn dependency:go-offline se puede usar para garantizar que tenga todas sus dependencias instaladas localmente antes de comenzar a trabajar fuera de línea.

Si tiene una PC con acceso a Internet en su LAN, debe instalar un repository local de Maven.

Recomiendo Artifactory Open Source . Esto es lo que usamos en nuestra organización, es realmente fácil de configurar.

El artefacto actúa como un proxy entre su herramienta de construcción (Maven, Ant, Ivy, Gradle, etc.) y el mundo exterior.

Guarda en caché artefactos remotos para que no tenga que descargarlos una y otra vez.

Bloquea las solicitudes externas no deseadas (y, a veces, sensibles a la seguridad) de artefactos internos y controla cómo y dónde se implementan los artefactos, y por quién.

Después de configurar Artifactory, solo necesita cambiar la settings.xml de settings.xml en las máquinas de desarrollo:

     * repo http://maven.yourorganization.com:8081/artifactory/repo repo        false  central libs-release http://maven.yourorganization.com:8081/artifactory/libs-release    snapshots libs-snapshot http://maven.yourorganization.com:8081/artifactory/libs-snapshot      false  central plugins-release http://maven.yourorganization.com:8081/artifactory/plugins-release    snapshots plugins-snapshot http://maven.yourorganization.com:8081/artifactory/plugins-snapshot   artifactory    artifactory   

Usamos esta solución porque tuvimos problemas con el acceso a Internet en nuestras máquinas de desarrollo y algunos artefactos descargaron archivos dañados o no se descargaron en absoluto. No hemos tenido problemas desde entonces.

Tienes dos opciones para esto:

1.) hacer cambios en la configuración.xml agregar esto en la primera etiqueta

 C:/Users/admin/.m2/repository 

2.) use la etiqueta -o para el comando fuera de línea.

 mvn -o clean install -DskipTests=true mvn -o jetty:run 

Maven necesita las dependencias en su repository local. La forma más fácil de obtenerlos es con acceso a Internet (o más difícil con otras soluciones proporcionadas aquí).

Asumiendo que puede obtener acceso a Internet temporalmente, puede prepararse para desconectarse utilizando el complemento maven-dependency-plugin con su objective de dependencia: go-offline . Esto descargará todas las dependencias de su proyecto a su repository local (por supuesto, los cambios en las dependencias / complementos requerirán un nuevo acceso a Internet / repository central).

Lamentablemente, la dependency:go-offline no funcionó para mí, ya que no almacenaba todo en caché, es decir. Los archivos POM y otros mencionan implícitamente dependencias.

La solución ha sido especificar una ubicación de repository local , dentro del archivo settings.xml con ... o ejecutando mvn con -Dmaven.repo.local=... parameter. Después de la creación inicial del proyecto, todos los artefactos necesarios se deben almacenar en caché, y luego se puede hacer referencia a la ubicación del repository de la misma manera, mientras se ejecuta Maven build en modo fuera de línea ( mvn -o ... ).

¿Esto funciona para tí?

http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html

No olvides agregarlo a tu repository de complementos y dirigir la url a donde sea que esté tu repository.

   local file://D:\mavenrepo     local file://D:\mavenrepo   

De lo contrario, es posible que deba ejecutar un servidor local, por ejemplo, apache, en sus máquinas.

o

Solo use servidores de repository Maven como Sonatype Nexus http://www.sonatype.org/nexus/ o JFrog Artifactory https://www.jfrog.com/artifactory/ .

Después de que un desarrollador construye un proyecto, la comstackción de los próximos desarrolladores o Jenkins CI no requerirá acceso a Internet.

El servidor de repository Maven también puede tener proxies configurados para acceder a Maven Central (o repositorys públicos más necesarios), y pueden tener una lista de artefactos sincronizados en repositorys remotos.

Antes de desconectarte, debes asegurarte de que todo esté en tu repository local, lo que se requiere mientras trabajas fuera de línea. Ejecutar “mvn dependency: go-offline” para los proyectos / pom (s) en los que tiene la intención de trabajar reducirá los esfuerzos para lograrlo.

Pero generalmente no es toda la historia, porque la dependencia: go-offline solo descargará los complementos de “creación simple” ( go-offline / resolve-plugins no resuelve todas las dependencias de los complementos ). Por lo tanto, debe encontrar una forma de descargar los plugins de despliegue / prueba / sitio (y tal vez otros) y sus dependencias en su repository.

Además, dependency: go-offline no descarga el artefacto de pom en sí, por lo que tiene que depender: cópielo si es necesario.

Algunas veces, como escribió MaDa, no sabes qué necesitarás mientras estás fuera de línea, lo que hace que sea prácticamente imposible tener un repository “suficiente”.

De todos modos, teniendo un repository debidamente llenado, solo tienes que agregar “ verdadero ” a la configuración de Maven.xml para desconectarte.

No cambie el perfil de Maven (id) que usó para completar su repository, mientras está fuera de línea. Maven reconoce los artefactos descargados en sus metadatos con una “identidad”, que está vinculada a la identificación del perfil.

Si está utilizando IntelliJ, puede simplemente ir a Preferencias -> Construir, Ejecución, Despliegue -> Herramientas de comstackción -> Maven y marcar / desmarcar Trabajar sin conexión .

Respondiendo a su pregunta directamente: no requiere una conexión a Internet, pero tiene acceso a un repository, en una LAN o en un disco local (use sugerencias de otras personas que publicaron aquí).

Si su proyecto no está en una fase madura, eso significa que cuando los POM se cambian con bastante frecuencia, el modo fuera de línea será muy poco práctico, ya que también tendrá que actualizar su repository con bastante frecuencia. A menos que pueda obtener una copia de un repository que tenga todo lo que necesita, pero ¿cómo lo sabría? Normalmente se inicia un repository desde cero y se clona gradualmente durante el desarrollo (en una computadora conectada a otro repository). Una copia del repository público repo1.maven.org pesa cientos de gigabytes, por lo que tampoco recomendaría la fuerza bruta.

En preparación antes de trabajar fuera de línea solo ejecuta la mvn dependency:go-offline

Mi experiencia muestra que la opción -o no funciona correctamente y que el objective de ir fuera de línea está lejos de ser suficiente para permitir una comstackción completa sin conexión:

La solución que pude validar incluye el uso de la --legacy-local-repository lugar del -o (fuera de línea) y el uso del repository local en lugar del repository de distribución

Además, tuve que copiar todos maven-metadata-maven2_central.xml archivos maven-metadata-maven2_central.xml del repository local en el formato maven-metadata.xml esperado por maven.

Vea la solución que encontré aquí .