¿Por qué utilizar Gradle en lugar de Ant o Maven? [cerrado]

Resuelto IttayD asked hace 15 años • 9 respuestas

¿Qué me aporta realmente otra herramienta de compilación dirigida a Java?

Si usa Gradle en lugar de otra herramienta, ¿por qué?

IttayD avatar Jul 22 '09 12:07 IttayD
Aceptado

Yo no uso Gradle cuando estoy enojado (hasta ahora solo es un proyecto de juguete) [el autor quiere decir que hasta ahora han usado Gradle solo en un proyecto de juguete, no es que Gradle sea un proyecto de juguete; vea los comentarios] , pero yo diría que Las razones por las que uno consideraría usarlo serían las frustraciones de Ant y Maven.

En mi experiencia, Ant suele ser de solo escritura (sí, sé que es posible escribir compilaciones elegantes y bellamente modulares , pero el hecho es que la mayoría de la gente no lo hace). Para cualquier proyecto no trivial, resulta alucinante y se tiene mucho cuidado para garantizar que las construcciones complejas sean realmente portátiles. Su naturaleza imperativa puede llevar a la replicación de la configuración entre compilaciones (aunque las macros pueden ayudar aquí).

Maven adopta el enfoque opuesto y espera que usted se integre completamente con el ciclo de vida de Maven. Los usuarios experimentados de Ant encuentran esto particularmente discordante ya que Maven elimina muchas de las libertades que tienes en Ant. Por ejemplo, hay un blog de Sonatype que enumera muchas de las críticas de Maven y sus respuestas.

El mecanismo del complemento Maven permite configuraciones de compilación muy poderosas, y el modelo de herencia significa que puede definir un pequeño conjunto de POM principales que encapsulan sus configuraciones de compilación para toda la empresa y los proyectos individuales pueden heredar esas configuraciones, dejándolos livianos. La configuración de Maven es muy detallada (aunque Maven 3 promete abordar esto), y si desea hacer algo que "no sea a la manera de Maven", debe escribir un complemento o usar la integración hacky Ant. Tenga en cuenta que me gusta escribir complementos de Maven, pero aprecio que muchos se opondrán al esfuerzo que implica.

Gradle promete llegar al punto óptimo entre Ant y Maven. Utiliza el enfoque de Ivy para la resolución de dependencias. Permite convenciones sobre la configuración pero también incluye tareas Ant como ciudadanos de primera clase. También le permite utilizar los repositorios Maven/Ivy existentes.

Entonces, si te topas con alguno de los puntos débiles de Ant/Maven, probablemente valga la pena probar Gradle, aunque en mi opinión queda por ver si no estarías simplemente intercambiando problemas conocidos por otros desconocidos. Sin embargo, la prueba del pudín está en comerlo, por lo que me reservaría mi opinión hasta que el producto esté un poco más maduro y otros hayan solucionado cualquier problema (lo llaman vanguardia por una razón). Sin embargo, seguiré usándolo en mis proyectos de juguetes. Siempre es bueno estar al tanto de las opciones.

Rich Seller avatar Jul 22 '2009 14:07 Rich Seller

Gradle se puede utilizar para muchos propósitos (es una navaja suiza mucho mejor que Ant), pero se centra específicamente en compilaciones de proyectos múltiples.

En primer lugar, Gradle es una herramienta de programación de dependencias, lo que también significa que es una herramienta de programación. Con Gradle puedes ejecutar cualquier tarea aleatoria en tu configuración y Gradle se asegurará de que todas las dependencias declaradas se ejecuten de manera adecuada y oportuna. Su código se puede distribuir en muchos directorios en cualquier tipo de diseño (árbol, plano, disperso,...).

Gradle tiene dos fases distintas: evaluación y ejecución. Básicamente, durante la evaluación, Gradle buscará y evaluará los scripts de compilación en los directorios donde se supone que debe buscar. Durante la ejecución, Gradle ejecutará las tareas que se cargaron durante la evaluación teniendo en cuenta las interdependencias de las tareas.

Además de estas características de programación de dependencia, Gradle agrega características de dependencia de proyectos y JAR mediante la integración con Apache Ivy. Como usted sabe, Ivy es una herramienta de gestión de dependencias mucho más poderosa y menos obstinada que, por ejemplo, Maven.

Gradle detecta dependencias entre proyectos y entre proyectos y JAR. Gradle funciona con repositorios Maven (descarga y carga) como el de iBiblio o tus propios repositorios, pero también admite otros tipos de infraestructura de repositorio que puedas tener.

En construcciones de múltiples proyectos, Gradle es adaptable y se adapta a la estructura y arquitectura de la construcción. No es necesario adaptar su estructura o arquitectura a su herramienta de construcción como sería necesario con Maven.

Gradle intenta con todas sus fuerzas no interponerse en su camino, un esfuerzo que Maven casi nunca hace. La convención es buena, pero también lo es la flexibilidad. Gradle le ofrece muchas más funciones que Maven, pero lo más importante es que, en muchos casos, Gradle le ofrecerá una ruta de transición sencilla para alejarse de Maven.

Steven Devijver avatar Oct 07 '2009 23:10 Steven Devijver