¿A partir de 2015 debo usar Ant, Maven o Gradle para construir mis proyectos Java?

Entonces, he usado Maven durante unos años y hace aproximadamente un mes decidí sumergirme en Gradle. Si tuviera que hacerlo nuevamente, mi veredicto en este punto es: no te molestes.

Ojalá fuera de otra manera.

A partir de hoy, AFAICT, no hay razón para cambiar de maven y hay muchas razones para no hacerlo. (Advertencias: si estás haciendo desarrollo de Android y / o si quieres escribir lógica de compilación personalizada en Groovy, entonces ve a gradle). Quería que me gustara más gradle. El formato simplificado de sus archivos de compilación es atractivo. Pero, después de un mes, descubro que en su mayoría solo estoy luchando con eso, mientras que maven, aunque crujiente en muchos sentidos, hace lo razonable.

Puntos particulares:

Los perfiles + Maven son útiles. Si bien escribir la lógica condicional para gradle no es difícil, terminas con esta lógica esparcida en todo tipo de secciones del archivo de compilación. Yuck
+ Pruebas de integración: Maven sabe cómo hacer esto de forma inmediata. Gradle … bueno, es complicado. Por lo general, debe reestructurar su código.
+ Padre pom y definiciones externalizadas. Maven … horneado. Gradle … rodar el tuyo. Ah, y esos números de versión comunes y compartidos … buena suerte en gradle si está usando eso para un complemento porque el especificador de complemento DEBE ser lo primero, por lo tanto, debe codificar esas cosas. ¿Por qué?
La manera súper funky de Gradle de almacenar dependencias en su carpeta local. ¿Por qué?
+ Construir un “súper jar” sombreado en gradle es un trabajo extra.

Hay más problemas, pero tal vez entiendes el punto.

En resumen, el gradle se ve mejor en la sala de exposición o en el garaje, pero una vez que lo sacas a dar una vuelta, no maneja ni conduce mejor para las tareas regulares y para muchos es peor.

Quiero una experiencia que coincida con la impresión dada por los archivos de construcción inicialmente delgados: un lugar donde las cosas simplemente funcionan y la mayoría de las cosas que haces como desarrollador Java se piensan de antemano. Gradle recibe accesorios por ser más de uso general que maven. Pero…. No vale la pena el esfuerzo en este momento.

Prefiero una herramienta que acaba de mover a Maven hacia adelante. Maven es una buena conceptualización del desarrollo de Java. Se beneficiaría de una evolución seria. Sin embargo, no estoy seguro de que la revolución de Gradle me lleve a un lugar mejor. Ojalá lo hiciera.

Ni siquiera voy a cubrir la hormiga. No lo he usado en más de 3 años, excepto bajo coacción y SOooo a menudo ha encontrado construcciones imposibles de mantener que usan hormigas y han sido una pesadilla operativa. (Dicho esto, si debe seguir esa ruta, al menos use Ivy con ella).

Hormiga

La mayoría ya se ha dicho. Si estás atrapado en Ant, entonces no te has movido mucho desde 1997. Si estás en Ant, entonces muévete a Gradle o Maven.

Gradle vs Maven

Tengo otra opinión sobre esto que la mayoría de los otros encuestados. Gradle puede ser más nuevo y ofrecer más flexibilidad. Sin embargo, esa flexibilidad tiene el costo de posiblemente crear algo “no estándar” cuando una solución estándar (léase: basada en convenciones) estaba realmente disponible. Esto es bueno y malo.

Al final del día, Gradle no ofrece una ventaja suficiente sobre Maven … y la cuestión es: dado que hay tantas cosas por ahí que ya usan Maven, será bastante difícil para ti afirmar que eres un programador de Java y entonces no conozco a Maven. La pregunta es: si desea utilizar Gradle, ¿tiene el ancho de banda para comprender realmente tanto Maven como Gradle? Porque te verás obligado a entender y usar Maven de todos modos.

He visto a Gradle ser introducido en organizaciones que ya estaban basadas en Maven. Así que ahora algunos proyectos usan Gradle y otros usan Maven forzando a los desarrolladores a aprender ambos. Claro, hay algunos buenos trucos y claridad en Gradle, pero no lo suficiente. Como desarrolladores de Java, tenemos toneladas de cosas que necesitamos aprender todos los días, todas las semanas. Después de pasar tiempo aprendiendo Gradle, no estoy seguro de que diría en retrospectiva que valió la pena … en cuanto al tiempo. Podría haber pasado mi tiempo más sabiamente.

Solo mis dos centavos.

Ant es una herramienta de compilación pero no es una herramienta de gestión de dependencias. Tanto Mave como Gradle administran las dependencias de sus proyectos. Cuando especifique una dependencia, descargarán esas dependencias y cualquier dependencia que necesite también.

Además, tanto Maven como Gradle asumen una estructura de directorio estándar para el lugar donde existirán el código fuente, el código de prueba, los recursos y los archivos de destino.

Si está trabajando en un proyecto existente que usa hormiga como herramienta de compilación, entonces hay un valor para convertir a Maven o Gradle.

Si su proyecto ya está utilizando Maven, entonces realmente no hay necesidad de convertir.

Gradle es el último, así que si tu proyecto es nuevo, usaría Gradle.

Bueno, depende, ¿qué vas a usar en un futuro próximo para tu proyecto?

Todas estas herramientas realizan la misma acción a su manera.

Opciones

  • Gradle

Es posible que esté utilizando o no otras funciones que utiliza Google para el desarrollo de Android, ya que esas características pueden o no coincidir con sus necesidades, sin embargo, Gradle está emergiendo esencialmente como una herramienta popular y definitivamente querrá echarle un vistazo. gradle es DSL y, por lo tanto, proporciona mucha más flexibilidad para definir sus lógicas.
Al mismo tiempo, DSL dificultaría un poco, ya que el estándar puede cambiar y puede terminar cambiando su script de compilación.

  • Maven

Maven es ampliamente utilizado en la mayoría de las empresas y tiene un flujo de trabajo definido robusto a su alrededor. Los desarrolladores están muy familiarizados con el sistema. Sin embargo, esta puede no ser una opción viable ya que el desarrollo de Android necesita usar gradle.

  • Maven y Gradle (Ambos)

Esta sería una opción más para una empresa con una amplia gama de áreas de desarrollo que puede brindar a los desarrolladores flexibilidad para adoptar herramientas según su elección en un flujo de trabajo determinado.

Referencias ->
Release Engineering, SCM, DevOps
Página en zeroturnaround.com

Yo diría Gradle.

Como mencionó Ben, tanto Maven como Gradle proporcionan gestión de dependencia y asumen cierta estructura de carpetas. Esto en sí mismo es de gran ayuda. Me di cuenta cuando partes de nuestro proyecto fueron trasladadas de Ant a maven y gradle.

La ventaja que tiene Gradle sobre Maven: gradle te da la capacidad de hackear. Groovy es de gran ayuda aquí.

En realidad, Gradle elige lo mejor de Ant y Maven. ¡Así que gradle es!

Editar: es posible que desee visitar Enterprise Build Automation l Why Gradle #WhyGradle y ver más razones para seleccionar Gradle.

Maven o Gradle. Tanto Maven como Gradle se construyeron hasta cierto punto según los aprendizajes del uso de Ant y para alinearse con el proceso Agile.

Pero no creerías cuántas personas todavía juran por Ant en las empresas del viejo mundo, sin tener idea de cuánto ha avanzado el mundo. En comparación con Maven / Gradle, usar Ant y la forma en que maneja las dependencias, parece contrario a la intuición.

Gradle es lo que hay hoy en día. Sin embargo, no veo mucha diferencia entre Maven y Gradle.

Elija el que le resulte más conveniente.

Si esos tres son la opción, ve con Gradle.

(En estos días, como programador de Scala, uso SBT. Es … diferente).

More Interesting

¿Cuándo se puede llamar a un desarrollador de software el mejor? ¿En qué debería ser bueno para ser reclamado como el mejor en el campo?

¿Cuánto tiempo le tomaría a una persona promedio sin experiencia en programación convertirse en un desarrollador de pila completa? Quiero ser competente en las tecnologías front-end y back-end. Tengo un conocimiento muy básico de HTML y estoy aprendiendo CSS.

¿Cuál es la mejor práctica de crear un setup.exe para mi proyecto de Windows?

¿Cuánto tiempo llevaría crear la aplicación Flappy Bird para algunos de ustedes desarrolladores de software desde cero?

¿Las entrevistas de trabajo fallidas (desarrollador de software) afectan negativamente a su marca personal como candidato para las oportunidades futuras?

¿Realmente crees que el discurso de "las compañías de software están predicando" hay muy pocos ingenieros de software calificados disponibles en los Estados Unidos? ¿Es este discurso de 'no tener suficientes ingenieros calificados' un farol para lograr que el gobierno dé más H1B?

¿Debería un equipo de desarrollo de software que realiza un microservicio permitir solicitudes de extracción externas o no?

¿Cómo se puede entrar en la banca de inversión después de trabajar en el desarrollo de software durante casi una década? ¿Es incluso aconsejable?

¿Cuáles son las compañías más seguras para desarrolladores / ingenieros de software en India?

¿Los ingenieros de software usan pascal?

Cómo comenzar a convertirse en un desarrollador de aplicaciones o software exitoso

Para un primer trabajo, ¿es preferible ser ingeniero / desarrollador de software en una gran multinacional o una startup? ¿Por qué por qué no?

¿Por qué IBM tiene una reputación tan pobre para desarrollar soluciones de software?

¿Qué habilidades y software necesito para hacer una aplicación de Android?

Desarrolladores de software: ¿Puede describir su primer trabajo en términos de su productividad en comparación con ahora?