325 votos

¿Por qué usar Gradle en lugar de Ant o Maven?

¿Qué otra herramienta de construcción destinada a Java realmente me das?

Si usas Gradle sobre otra herramienta, por qué?

(Véase también por qué utilizar Buildr en lugar de Ant o Maven)

249voto

Rich Seller Puntos 46052

Yo no uso Gradle en la ira yo mismo (tan sólo un juguete proyecto hasta ahora) [el autor se refiere a que han utilizado Gradle en sólo un juguete proyecto hasta el momento, no se que Gradle es un juguete proyecto - ver comentarios], pero yo digo que los motivos por los que uno podría considerar el uso sería a causa de las frustraciones de la Ant y Maven.

En mi experiencia Hormiga es a menudo sólo escritura (sí, sé que es posible escribir bellamente modular, elegante construirs, pero el hecho es que la mayoría de la gente no lo hace). Para cualquier no-trivial de proyectos se convierte en la mente-flexión, y tiene mucho cuidado para asegurarse de que el complejo se construye en verdaderamente portátil. Su imperativo de la naturaleza puede conducir a la replicación de la configuración entre generaciones (aunque las macros pueden ayudar aquí).

Maven hace lo contrario y se espera que se integran completamente con el ciclo de vida de Maven. Experiencia Hormiga a los usuarios a encontrar esta particularmente chocante como Maven elimina muchas de las libertades que tiene en Hormiga. Por ejemplo, hay un Sonatype blog que enumera muchas de las Maven críticas y sus respuestas.

El plugin de Maven mecanismo permite que por muy potente que las configuraciones de compilación, y el modelo de herencia significa que usted puede definir un conjunto pequeño de los padres POMs encapsular sus configuraciones de compilación para el conjunto de la empresa y de los proyectos individuales pueden heredar esas configuraciones, dejándolos a la ligera. Configuración de Maven es muy detallado (aunque Maven 3 se compromete a abordar este), y si quieres hacer algo que no es "el Maven manera" tienes que escribir un plugin o utilizar el chapucero de la Hormiga de la integración. Nota a mí me gusta la escritura de plugins de Maven, pero conscientes de que muchos serán objeto de que el esfuerzo implicado.

Gradle promesas para golpear el punto dulce entre la Ant y Maven. Utiliza la Hiedraenfoque para la resolución de dependencia. Permite convención sobre configuración, sino que también incluye tareas Ant como ciudadanos de primera clase. También sabiamente le permite usar Maven/Ivy repositorios.

Así que si usted ha golpeado y se quedó con cualquiera de los Ant/Maven puntos de dolor, es probablemente vale la pena probar Gradle, aunque en mi opinión habrá que ver si no acaba de ser el comercio de problemas conocidos por desconocidos. La prueba del budín está en comerlo, así que me gustaría reservar juicio hasta que el producto es un poco más maduro y otros han desaparecido las torceduras (la llaman filo de una razón). Voy a estar usando en mi juguete proyectos, sin embargo, siempre es bueno ser conscientes de las opciones.

80voto

Steven Devijver Puntos 2167

Gradle puede ser usado para muchos propósitos - es mucho mejor la navaja Suiza de Ant - pero centrado específicamente en la multi-genera el proyecto.

Primero de todo, Gradle es una dependencia de la herramienta de programación que también significa que es una herramienta de programación. Con Gradle usted puede ejecutar cualquier tarea aleatoria en la configuración y Gradle se asegurará de que todas declarado dependecies adecuada y oportuna ejecutado. El código puede extenderse a través de muchos directorios en cualquier tipo de diseño (árbol, plana, dispersos, ...).

Gradle tiene dos fases distintas: la evaluación y ejecución. Básicamente, durante la evaluación Gradle se buscan y evalúan construir scripts en los directorios que se supone que se vea. Durante la ejecución de Gradle se encargará de ejecutar las tareas que se han cargado durante la evaluación, teniendo en cuenta la tarea inter-dependencias.

En la parte superior de estos dependencia de las características de la programación Gradle añade proyecto y JAR características de dependencia por intergration con Apache Ivy. Como usted sabe, la Hiedra es una mucho más potente y mucho menos obstinado en la gestión de la dependencia herramienta que decir de Maven.

Gradle detecta las dependencias entre proyectos y entre los proyectos y las Jarras. Gradle trabaja con los repositorios Maven (carga y descarga) como el iBiblio uno o a sus propios repositorios, pero también apoya y otro tipo de repositorio de infraestructura que pueda tener.

En varios proyectos se basa Gradle es tanto adaptable y se adapta a la construcción de la estructura y la arquitectura. Usted no tiene que adaptarse a su estructura o arquitectura para la construcción de la herramienta, como ocurriría con Maven.

Gradle trata muy difícil no ponerse en su camino, un esfuerzo de Maven casi nunca se hace. La convención es bueno todavía lo es la flexibilidad. Gradle le ofrece muchas más características que Maven no, pero lo que es más importante, en muchos casos, Gradle le ofrecemos un doloroso camino de transición lejos de Maven.

64voto

omnisis Puntos 999

Esto puede ser un poco controversial, pero Gradle no oculta el hecho de que es un completo lenguaje de programación.

Ant + ant-contrib es esencialmente un turing completo lenguaje de programación que nadie quiere realmente programa.

Maven intenta tomar el enfoque opuesto de tratar de ser completamente declarativa y te obliga a escribir y compilar un plugin si usted necesita la lógica. Asimismo, impone un modelo de proyecto que es completamente inflexible. Gradle, combina lo mejor de estas herramientas:

  • De ello se sigue la convención sobre configuración (ala Maven), pero sólo en la medida en que usted desea
  • Permite escribir personalizado flexible de tareas, como en la de la Hormiga
  • Se ofrece multi-módulo de apoyo al proyecto, que es superior a ambos Ant y Maven
  • Tiene un DSL que hace que el 80% de las cosas sencillas y el 20% de las cosas posibles (a diferencia de otras herramientas de construcción que hacen el 80% fácil, 10% y 10% efectivamente imposible).

Gradle es el más configurable y flexible herramienta de construcción todavía tengo que utilizar. Requiere cierta inversión en la parte frontal para aprender el DSL y conceptos como configuraciones, pero si usted necesita un sin sentido y completamente configurable JVM herramienta de construcción es difícil de superar.

49voto

piotrga Puntos 700

Gradle bien combina Ant y Maven, tomando lo mejor de ambos marcos. La flexibilidad de la Hormiga y la convención sobre configuración, gestión de la dependencia y de los plugins de Maven.

Así que si quieres tener un estándar de java build, como en maven, pero la tarea de prueba tiene que hacer algún paso personalizado podría verse como en la figura siguiente.

build.gradle:

apply plugin:'java'
task test{
  doFirst{
    ant.copy(toDir:'build/test-classes'){fileset dir:'src/test/extra-resources'}
  }
  doLast{
    ...
  }
}

En la parte superior de la que utiliza groovy sintaxis que da mucho más la expresión de potencia ant/maven xml.

Es un superconjunto de Ant - usted puede utilizar todas las tareas Ant en gradle con más agradable, groovy-como en la sintaxis, es decir.

ant.copy(file:'a.txt', toDir:"xyz")

o

ant.with{
  delete "x.txt"
  mkdir "abc"
  copy file:"a.txt", toDir: "abc"
}

35voto

BCK Puntos 359

Utilizamos Gradle y lo eligió más de Maven y Ant. Hormiga nos dio una flexibilidad total, y la Hiedra da una mejor gestión de la dependencia de Maven, pero no hay gran soporte para multi-genera el proyecto. Usted termina haciendo un montón de codificación para soporte multi-genera el proyecto. También tener algunas construir-por-la convención es agradable y hace que la construcción de guiones más concisa. Con Maven, se necesita construir por convención demasiado lejos, y personalizar su proceso de construcción se convierte en un hack. También, Maven promueve cada proyecto de publicación de un artefacto. A veces usted tiene un proyecto se divide en subproyectos, pero usted quiere que todas las subproyectos a ser construido y versionada juntos. No es realmente algo Maven está diseñado para.

Con Gradle usted puede tener la flexibilidad de una Hormiga, y construir por la convención de Maven. Por ejemplo, es trivial para extender la convencional construir el ciclo de vida con su propia tarea. Y tú no estás obligado a usar una convención, si usted no lo desea. Groovy es mucho más agradable para el código de XML. En Gradle, usted puede definir las dependencias entre proyectos en el sistema de archivos local, sin necesidad de publicar artefactos para cada repositorio. Finalmente, Gradle utiliza la Hiedra, por lo que tiene una excelente gestión de la dependencia. La única desventaja real para mí hasta ahora es la falta de madurez de la integración con Eclipse, pero las opciones para Maven no son realmente mucho mejor.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X