Maven vs Ant para compilaciones automáticas en aplicaciones de Android

Estoy evaluando si utilizar Ant o Maven para automatizar mi proceso de creación para el desarrollo de Android. He estado intentando leer en línea para tomar una decisión informada, pero no he encontrado muchas especificaciones relacionadas con el desarrollo de Android. Basado en su experiencia:

  • Cuáles son las principales diferencias ?
  • He leído a algunas personas diciendo que tienen diferentes propósitos? ¿Cuáles serían?
  • ¿Qué te haría elegir uno sobre el otro?
  • ¿Cuáles son los puntos fuertes y las debilidades de cada uno?
  • ¿Qué es más fácil de configurar y mantener?
  • ¿Hay uno que es ofrecido / más utilizado en la comunidad?

He encontrado una pregunta similar ¿ Qué beneficios Maven da (más de hormigas) para la construcción de proyectos de Android? , Pero él estaba preguntando por los beneficios de Maven sobre Ant y, en primer lugar, yo ni siquiera conocía los beneficios de Ant, y, en segundo lugar, él solo recibió una respuesta que no dejó las cosas claras para mí.

Utilizo Intellij, por si acaso hace alguna diferencia aunque espero que no.

Si puedes usar Maven, ve con Maven. Y, no te atrevas a intentar cambiar los directorios estándar! Heck, incluso cuando utilizamos hormiga, insisto en la configuración de los directorios como Maven. De esta manera, los nuevos desarrolladores saben dónde están las cosas, o tienen que rastrear a través de la build.xml para encontrar dónde se encuentran las cosas. Las otras cosas es que si usas Ant, deberías usar Ivy . De esta manera, obtendrá el manejo de dependencia de Maven dentro de Ant.

La gran ironía es que una vez que usamos Ant y Ivy, y nos atenemos a la estructura de directorios estándar de Maven, pasar de Ant a Maven es un cinch. Pero, la necesidad de mudarse a Maven también se reduce. Nuestro build.xml es limpio y simple de entender. Todos los archivos están en el lugar correcto. Las construcciones son rápidas, sencillas y fáciles de mantener. ¿Quién necesita Maven?

El problema es que una vez que hemos llegado a este estado de Nirvana, es para mantener el proyecto de regresar al Estado de Nueva Jersey. Los desarrolladores comienzan a crear excepciones en nuestro build.xml . No compile este archivo *.java . Mueva este *.xml a nuestro directorio java , ponga el código de prueba en el directorio main , pero pondremos la test nombre en el archivo, así que sabemos que es código de prueba … Se hacen cosas nuevas y complejas. Y, de alguna manera, estamos de vuelta en Secaucus.

Así que, una vez que tengo mi proyecto de hormiga limpia y lo suficientemente limpia como para moverme a Maven, hago el salto.

Una cosa más: Maven hace muy, muy simple copiar un proyecto de una computadora a otra. Maven maneja todas las cosas dependencias – incluso las cosas de la construcción. No más, necesitas AntContrib , o necesitas descargar las tareas de Hibernate Ant . Si necesita algo, se descargará por sí mismo. Es una de las grandes razones por las que Maven es tan popular entre muchos sitios de código abierto.

Mi gran queja sobre Maven es que está mal documentada. Hay un Wiki, pero casi ningún contenido, y muy pocos manuales.

¡Considere usar Gradle!

Combina lo mejor de Maven (convención sobre configuración) con lo mejor de Ant (la flexibilidad y la enorme biblioteca de tareas pre-fabricadas).

Una compilación de Gradle está escrita en Groovy, ¡así que tienes todo el poder de un lenguaje de scripting a tu alcance!

Hay un complemento de Android para Gradle. No lo he usado, así que no puedo decir si es bueno o no.

Ver http://www.gradle.org

No he usado Ant o Maven mucho para Java recientemente, pero puedo decirte las principales diferencias entre ellos – básicamente se reduce a las convenciones automatizadas (Maven) frente a la flexibilidad absoluta (Ant).

Maven hará casi todo para usted, pero es mucho más fácil de usar si usted arregla sus proyectos para satisfacerlo. Manejará el seguimiento y resolución de dependencias, la construcción, el empaquetado y el almacenamiento de los paquetes construidos, al mismo tiempo que ayudará con el mantenimiento de sucursales y la ingeniería de lanzamiento. Creo que es mucho más fácil liberar mis proyectos (flex) que se construyen con Maven.

Ant es mucho más flexible. Puedes hacer lo que quieras, construir de la manera que quieras. Si tiene proyectos preexistentes, puede automatizar gran parte de lo que está haciendo su IDE sin cambiar nada. No mantiene a mano tanto como Maven, lo que también hace que sea más fácil diagnosticar cuando las cosas van mal … Usted está en su propio para dependencias, ramas y lanzamientos, sin embargo. Donde usamos la hormiga, la usamos porque teníamos un proyecto que queríamos automatizar, y Maven no se adaptaría a la misma. Si necesitas hacer algo que Maven no soporta, Ant puede ser tu única esperanza.

Personalmente, usaría Maven sobre Ant si fuera posible, pero admito que no siempre es posible.

Estoy de acuerdo con la respuesta de Andrew en su totalidad. Sin embargo, me gustaría señalar que el soporte de maven no es suministrado por el equipo androide SDK. Es proporcionado por un tercero . Ahora, son un participante activo, pero todavía significa que puede haber un retraso en obtener soporte para las características más recientes.

Dicho esto, no me gusta especialmente el apoyo de hormigas proporcionado por el equipo androide SDK. Si ejecuta android create project que terminará con un build.xml que recomienda copiar pegar fragmentos de XML con el fin de personalizarlo. Esto hace que sea difícil pasar a una nueva versión del SDK de Android.

En general, sospecho que mover a maven será más fácil de mantener a largo plazo.

  • Subiste un APK que se firmó en modo de depuración. Necesita firmar su APK en el error de modo de liberación
  • Invoque "Maven Project Builder" en Eclipse en Ejecutar como -> Aplicación de Android (o manualmente)
  • Dependencia de Maven para libGoogleAnalyticsV2.jar en Android
  • Unidad de pruebas de Android con Maven
  • Maven android plugin: No se puede encontrar una ruta de acceso a Android SDK
  • Android Studio Gradle no puede encontrar 'com.android.support:design:22.2.0' (Android Design Support Library)
  • La conversión a Maven Project en Eclipse resulta en ClassNotFoundException
  • ¿Debo usar Maven para una aplicación para Android?
  • NoClassDefFoundError con Android Support Library y Maven
  • Error: No se encontró el complemento con id 'com.github.dcendents.android-maven'
  • Cambiar la carpeta de salida para Android R.java en Eclipse cuando se utiliza Maven
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.