org guide convertir cambiar maven-2 migration build-process gradle

guide - Migración de Maven 2/3 a Gradle



org gradle (5)

He estado investigando a Gradle y me parece bastante interesante. Creo que poder escribir tus scripts en cualquier otro idioma que no sea XML es muy bueno, y no tengo claro si los archivos POM políglota Maven siguen siendo una opción factible.

Estoy trabajando en un proyecto que usa Maven 2.2.1 como herramienta de compilación. Este proyecto:

  • es multi-módulo
  • utiliza (también nuestro) plugins
  • se basa en un repositorio de proxy de Artifactory

¿Hay alguna experiencia sobre las migraciones de Maven a Gradle? Gotchas, puntos de dolor, casos de esquina? Cualquier tipo de experiencia es muy bienvenida.


En el directorio donde tienes pom.xml simplemente ejecuta el siguiente comando:

gradle init - tipo pom

Esto debería convertir tu maven pom.xml en build.gradle


La migración de Maven a Gradle no es tan fácil como de Ant a Maven (al menos en este momento). Puede reutilizar fácilmente los scripts Ant y convertirlos en ciudadanos de primera clase en su compilación de Gradle. Hay una tarea en la hoja de ruta de Gradle para la importación profunda de compilaciones Maven también.

Hasta ahora, migré dos build Maven empresariales a Gradle. Ambos eran proyectos de varios módulos que usan complementos Maven estándar. Básicamente reescribí las compilaciones de la forma Gradle, que requiere al menos algo de conocimiento sobre Gradle. En función de mi experiencia, también puedes ejecutar fácilmente la misma compilación en Gradle. Gradle realmente no te encerra aquí y es bastante flexible. En el camino, puede que tenga que escribir un complemento personalizado que aún no existe, según los complementos de Maven que esté utilizando. Sin embargo, ya hay una gran cantidad de complementos por ahí. Hasta ahora no me he topado con un obstáculo real. Aunque la documentación de Gradle es bastante buena, puede que te encuentres leyendo muchas publicaciones en el foro de Gradle para encontrar la solución a uno de tus problemas. Algunas de las características estándar de Maven no se admiten listas para usar, por ejemplo, un alcance provided o WAR en su lugar . Sin embargo, hay formas fáciles de resolverlo. No he usado repositorios de Artifactory. Los que he tratado son repositorios de Nexus. Hasta donde yo sé, los chicos de Gradle tienen un buen apoyo para Artifactory. Editar: JFrog proporciona un complemento Artifactory Gradle .

Una buena forma de comenzar es utilizar la herramienta de migración Maven2Gradle que le permite generar un script de Gradle desde su compilación Maven. Personalmente, no lo usé todavía. Desarrollé la compilación Gradle lado a lado con la compilación Maven que no causó ningún problema. Maven puso su producción por debajo del target , Gradle en build . Asegúrese de preparar a su equipo para el cambio. Permítales probar la construcción de Gradle y familiarizarse con la herramienta.

Una vez que haya migrado por completo, estará muy contento con el mantenimiento y la extensibilidad de su compilación. Es muy fácil agregar lógica de compilación personalizada y le agradecerá que haya dejado XML-land. En términos de rendimiento, no vas a dar un paso atrás también. La característica de compilación incremental hace su trabajo muy bien.


Siempre puedes cambiar buildDir para que sea ''target'' en gradle si quieres que la salida de compilación pase por ''target'' lugar de ''build'' como maven:

buildDir = ''target''


También puede leer este artículo sobre mi experiencia en portar un proyecto de maven a gradle.


maven2Gradle parece haber sido reemplazado por ser capaz de ejecutar gradle init desde la línea de comandos (aunque es una característica bastante experimental). Parece que funciona bien para hacer una configuración básica de Gradle desde un proyecto de Maven.