maven-2 - que - maven tutorial español
Maven o Ivy para gestionar las dependencias de la hormiga? (8)
Me preguntaba sobre la mejor forma de administrar las dependencias de proyectos de hormiga. ¿Cuáles son los pros y los contras de la tarea Maven Ant y de Ivy?
Sé que una de las ventajas de Ivy es que puede usar diferentes tipos de repositorios. Maven es típicamente muy rígido en el formato del repositorio que usará. Eso es todo lo que sé.
Creo que esta publicación de blog cubre exactamente lo que el OP está buscando:
Por qué deberías usar las Tareas Maven Ant en lugar de Maven o Ivy
Acabo de pasar 2 días leyendo la documentación de Ivy y tengo que decir: USE MAVEN si tiene algún tipo de opción. Ivy es una basura total y completa hasta donde yo sé. Solo perdí 2 días tratando de incorporarlo a mi construcción y estoy reduciendo mis pérdidas ahora. ¿Por qué?
- Ivy es un intento a medias en la gestión de la dependencia
- La documentación de Ivy es una broma total
- Los ejemplos y el tutorial de Ivy son inútiles
Tan pronto como introduje las ''configuraciones'' (leídas como perfiles maven), Ivy comenzó a descargar todo tipo de basura que luego no necesitaba. La documentación para Ivy es una broma total. La documentación de Maven en comparación parece un sueño. Si desea un ejemplo de cuán impenetrable y mal escrita es la documentación de Ivy, eche un vistazo a la página de referencia para las configuraciones . Estas son una parte esencial de cualquier construcción, pero en Ivy parecen estar mal diseñadas después de pensarlo.
Ivy + Ant es mucho, mucho más flexible. Ivy administra la dependencia, punto, y lo hace extremadamente bien, mejor que Maven. Y con Ant puedes armar prácticamente cualquier sistema de compilación que quieras.
Maven intenta controlar todo: el "ciclo de vida" (compilación, prueba, paquete, etc.), donde deberían vivir los archivos, y así sucesivamente. Diviértete personalizando complementos y cosas similares si no te gusta el "modo Maven".
Maven es la respuesta a una pregunta que nadie hizo. Escribir un script Ant no es difícil, e Ivy te brinda una mejor administración de la dependencia que Maven. Estoy confundido por algunos de los comentarios anteriores que dicen que no pueden hacer que Ivy funcione. Ivy es bastante más simple que Maven para ponerse en marcha.
Spring Framework usa Ivy en su proceso de construcción. Creo que se puede ver como un buen voto de confianza para Ivy.
Ant + Ivy == Un campamento, donde las personas usan las instalaciones según sea necesario.
Maven == Un centro turístico, donde confía en otra persona para proporcionar servicios.
Maven es más fácil para un equipo que carece de experiencia de construcción / integración, pero cuando el equipo necesita divergir de los estándares de Maven, se encontrarán buscando groovy, gradle, y la falta de documentación sólida se volverá frustrante.
Ant + Ivy tardará más tiempo en iniciar un proyecto, pero si el equipo tiene experiencia de compilación / integración, puede adaptar el sistema de compilación a su manera de desarrollar y liberar código.
En ingeniería ... las empresas de tecnología siempre presiono por la solución de campamento frente al complejo.
Sin embargo, es sorprendente que tanto Ant como Maven elijan XML como su idioma para expresar recetas de compilación. La comunidad Java está atrapada en ese XML ...
Comparar a Maven con hiedra / hormiga es comparar un teléfono inteligente con la telegrafía.
Si desea aprovechar un efecto duradero real en su infraestructura de construcción, es mejor usar Maven porque anticipa y abstrae todos los procesos y tareas a los que se enfrenta cada proyecto de software u otro proyecto de tipo software. Participé en muchos proyectos y si sus proyectos se vuelven más complejos, más diversos y más heterogéneos, alabará aún más la simplicidad de la configuración de un proyecto de Maven. De hecho, se volverá complejo pero no complicado en comparación con los proyectos impulsados por hiedra / hormiga.
La principal ventaja de Maven es la "convención sobre la configuración" (http://en.wikipedia.org/wiki/Convention_over_configuration), un paradigma muy importante. En resumen, esto significa que no necesita saber / configurar cosas que son obvias / triviales / comunes. Aunque Maven y todos sus complementos se entregan con muchas configuraciones predeterminadas, siempre tienes la opción de configurar tus proyectos para tus necesidades especiales. Con Maven, por un lado, puede configurar un proyecto muy fácil y rápidamente; por otro lado, puede personalizar un proyecto en crecimiento según sus necesidades con el mínimo esfuerzo. Si ha entendido los conceptos clave detrás de Maven, aprovechará cada proyecto y también proyectos que no son proyectos típicos de desarrollo de software.
En el pasado, escribí muchos guiones de hormigas y con el próximo Maven empecé a odiar a la hormiga. Una desventaja es que siempre copias los guiones y te repites, desarrollas tareas que no repiten tareas que no repiten tareas que no se repiten ... Y la principal desventaja es que los guiones de hormiga crecientes tienden a quedar inmanejables, especialmente si una docena de geeks de hormigas quieren improvisar los guiones de cada hormiga.
Muchos entusiastas de las hormigas sufren el control general de cosas triviales como la copia de artefactos y la impresión de mensajes de compilación. Pero como el concepto clave de Maven es esconder estas cosas triviales, la leyenda se mantendrá viva para siempre y Maven restringe las necesidades de personalización. Pero no te preocupes, ¡eso es una leyenda! Y entonces finalmente entiendes mi declaración inicial: no te molestes con cosas triviales que ya están resueltas.
Quizás ivy / ant es una opción para proyectos simples, pero para proyectos de crecimiento complejos necesita simplicidad y convenciones. De lo contrario, se sentirá abrumado con más y más problemas de mantenimiento. Especialmente si tiene muchos proyectos dependientes, tecnologías y partes de productos heterogéneos en un proyecto global, no tiene tiempo ni dinero para desarrollar y probar scripts de hormiga o resolver problemas de dependencia.
Otro consejo debe ser mencionado: Ant ofrece la integración de Maven. Esta integración a menudo se usa para probar y jugar con maven en proyectos que han crecido con hormiga. Evita este enfoque estúpido porque genera más problemas. En cambio, quédate con la hormiga y su dolor o migra por completo a maven.
Si tiene dudas sobre los costos de migración, le sugiero que use la forma contraria de integrar esos mundos diferentes con Maven-Ant-Plugin. Con este plugin estándar puede ejecutar cada script ant sin ningún esfuerzo. Claro que es una solución heredada por un tiempo, pero le da tanto tiempo que necesita para entender mega-líneas de monstruosos guiones de hormigas sin corregir distorsionadas de su predecesor.
Y ahora, elogiará la próxima ventaja de maven: necesita muy poca documentación de su configuración, ya que la documentación forma parte de todos los complementos que quiera usar.
Entonces confieso que era un Antagonista Maven.
Como lo que quieres hacer es agregar administración de dependencias a un proyecto Ant existente, eso es precisamente lo que Ivy diseñó para hacer. La gestión de la dependencia es una gran parte de Maven, pero está lejos de todo. Maven es más una herramienta orientada a proyectos que hace muchas otras cosas además de las dependencias. Valdría la pena considerarlo si planeaba migrar a Maven y usar características adicionales de Maven, pero es un poco excesivo si todo lo que usaría es separar a Ant.
Su tipo de dependencias y sus expectativas sobre cómo se comportan también marcarán la diferencia. La extracción de dependencias de terceros es casi trivial en Maven, mientras que Ivy se destaca en la reconstrucción de sus propios componentes dependientes. En cualquier caso, las herramientas no proporcionarán una construcción decente, control de versiones y políticas de repositorio, esas aún dependen de usted y es necesario para obtener la configuración correcta.
Si su objetivo a largo plazo es migrar a Maven para administrar todo el proceso de compilación (lo que se podría querer hacer para nuevos proyectos greenfield), le recomiendo usar los archivos Maven pom.xml para administrar dependencias en nombre de Ant build.xml archivos. El resultado final es que tanto sus proyectos greenfield como sus proyectos heredados están usando el mismo mecanismo para administrar dependencias. Y resulta que Maven realmente hace un mejor trabajo de administración de dependencias para los archivos Ant build.xml que Ivy.
Antes de adoptar Maven como nuestra herramienta de construcción insignia, tuve un intento de desarrollador de usar Ivy en combinación con los archivos Ant build.xml existentes. Esta fue la experiencia más frustrante que muy pronto nos llevó a rechazar a Ivy. Seguimos adelante con una adopción de Maven. Nuestros proyectos greenfield comenzaron a construirse con el enfoque stock Maven, etc.
Sin embargo, volví a los proyectos heredados de Ant y comencé a utilizar la tarea Maven Ant para definir definiciones de rutas de clases (y ocasionalmente otras definiciones de propiedad Ant extraídas del pom.xml). Esta resultó ser una experiencia muy superlativa. Los archivos Ant build.xml existentes solo necesitan modificarse ligeramente para usar la integración de Maven ant para definir cualquier classpath que estuviera en uso en el archivo build.xml. Todas las dependencias requeridas por el proyecto se definieron en un archivo adjunto pom.xml que Maven procesa a través de la tarea Ant incorporada en los archivos build.xml.
Los alcances de Maven se pueden utilizar para ajustar con precisión las definiciones de las rutas de clase, de modo que se pueda establecer una adecuada para la compilación o la prueba unitaria en ejecución, o para el embalaje, etc. Además, casi cualquier elemento de algo definido en el archivo pom.xml se puede referenciar como una propiedad Ant dentro del archivo build.xml.
Realmente con la tarea Ant para Maven, no existe una razón viable para que Ivy exista.