¿Qué usas para un proceso de compilación complejo?

votos
11

Estoy tratando de renovar nuestro proceso de compilación, que actualmente es un Ant build.xml gigantesco que llama a otros archivos de compilación de ant y ejecuta varias clases de Java para realizar una lógica más compleja que sería imposible / aterrador de intentar en Ant.

Fondo:

  • experiencia en Java y Ant, algunos Groovy
  • Plataformas de Windows

Metas:

  • ejecutar como una combinación de cron de línea de comandos y cuando un servlet se publica en
  • lo más simplificado posible, menos idiomas y rebotes entre técnicos

Necesito poder lógico de mayor nivel que un lenguaje como Java proporciona y Ant es bastante fácil y utilizamos el filtrado para anular los archivos de propiedades predeterminados para diferentes clientes. Sobre todo me pregunto si hay algo más que Ant / Java que las personas usan.

Publicado el 06/02/2009 a las 15:57
por usuario
En otros idiomas...                            


15 respuestas

votos
3

Me gusta usar Rake ya que puede recurrir al poder de todo el lenguaje Ruby y su biblioteca de framework cuando sea necesario.

Respondida el 06/02/2009 a las 16:02
fuente por usuario

votos
3

Uso Ant, aprovechando su función macro . Si diseña su proyecto de forma consistente, puede eliminar gran parte de la duplicación escribiendo macros.

He estado compilando un Antlib que contiene macros y tareas personalizadas que reutilizo en múltiples proyectos.

Alternativamente, algunas personas juran por Maven. Otras personas solo juran por Maven.

Respondida el 06/02/2009 a las 16:06
fuente por usuario

votos
8

Excepto la hormiga que mencionaste y la marca / autotools scarry, las herramientas principales son:

Uso SCons, porque está basado en Python, está bien financiado y es elegante. Jam parece ser el más pragmático. No sé mucho sobre CMake. Maven puede ser la opción para ti, ya que está centrado en Java y tiene un nivel más alto que Ant.

Puedes encontrar más en wikipedia: lista de herramientas creadas

Respondida el 06/02/2009 a las 16:10
fuente por usuario

votos
4

También eche un vistazo a

Mientras que los sistemas de compilación más generales como SCons son muy potentes, el soporte de Java es algo limitado en comparación con los sistemas especialmente diseñados para construir proyectos de Java.

Respondida el 06/02/2009 a las 16:25
fuente por usuario

votos
2

Uso Maven, no solo para compilación, también uso su extensión / dist plugin.

En un par de comandos puedo tener código que estaba en un control de fuente para compilar, empaquetar y lanzar.

El complemento de lanzamiento maneja la actualización de los números de versión, dist maneja cómo juntar todo y comprimirlo.

La hormiga parece difícil en comparación con Maven. Seguro que hay una curva de aprendizaje con Maven, pero leer un pom.xml es mucho más fácil que leer un build.xml.

Maven necesita ser mucho menos detallado.

Respondida el 06/02/2009 a las 16:55
fuente por usuario

votos
1

Me gusta Ant pero solo si dedicas tiempo a escribir tus propios complementos de Java para encapsular acciones complejas. No es difícil, pero lamentablemente la mayoría de las personas intenta escribir su lógica en XML con las cosas ant-contrib. Creo que esto es un gran error.

He oído cosas buenas acerca de rake y las herramientas geniales (mencionadas en otro comentario) pero no tengo experiencia con ellas.

Si intentas guiar juntos varios pasos en un ciclo de vida, es mejor que utilices un servidor de compilación basado en la automatización de procesos como AnthillPro (Cruise, BuildForge y Electric-Commander son los otros en este espacio).

Otro lugar para hacer este tipo de preguntas es la lista de correo de CITCON . CITCON es una conferencia sobre Integración y Pruebas Continuas y la lista de correo asociada se ha convertido en una gran comunidad en torno a este tipo de temas.

(Soy un organizador de CITCON, pero un trabajo de amor, no de lucro. Realmente tiene una lista de correo realmente útil. Si yo fuera un chulo por algo, sería The CI Guys ; ;-))

Respondida el 06/02/2009 a las 17:33
fuente por usuario

votos
7

Si persigues a Maven, entonces tendrás dos problemas: una construcción compleja y aprender la "magia" f @ * # de Maven. Maven simplemente empeora el problema porque es obtuso y excesivamente complicado.

Heredé una versión heredada de Maven 1.x en una gran compañía de Fortune 500. Utilicé Maven 2.x por elección en muchos otros proyectos en los últimos años. Evalué a Maestro, con la esperanza de que Maven pudiera ser tratable. Mi conclusión, como la de muchas otras personas (revisa la 'red'), es que Maven es un gran paso en la dirección equivocada. Definitivamente no es una mejora sobre Ant.

He usado Ant por MUCHOS años, incluida la escritura de una gran biblioteca de código abierto de scripts de Ant helper. También he usado ampliamente su .NET primo nAnt. Sin embargo, Ant tiene dos fallas importantes. Primero, XML simplemente no es el lugar correcto para realizar tareas de compilación. Dos, Ant y XML no se adaptan bien a compilaciones grandes y complejas. De hecho, he escrito mucho aquí en SO sobre mis experiencias en ese campo (y con Maven).

Los líderes de la industria han llegado a la conclusión de que una compilación es solo otra aplicación, y se debe abordar utilizando herramientas de aplicaciones generales. Sin embargo, dado que se trata de una funcionalidad multiplataforma y de nivel de sistema, la mayoría de los lenguajes / plataformas de desarrollo no son adecuados (lo que incluye Java y, por lo tanto, Ant y Maven). Eso también excluye .NET.

Pasé dos años buscando una alternativa, y la encontré: Python. Tiene la combinación correcta de acceso a nivel de sistema, portabilidad multiplataforma, simplicidad, legibilidad, potencia, robustez y madurez. SCons, buildbot, setuptools / easyinstall y base Python son mi plataforma de destino actual para el proceso de compilación. Cuando sea necesario, la integración con Ant, Maven y cualquier otra herramienta similar es fácil. Mientras tanto, puedo utilizar estas herramientas para el núcleo de cualquier compilación en cualquier plataforma con cualquier idioma fuente. No más bloqueos, no más complejidad loca, no más guiones "declarativos" supuestamente útiles, no más black-box f @ * # ing "magic".

Si no puedes cambiar a Python, prueba con Ant + Ivy (en apache.org). Te proporciona el repositorio genial de Maven sin la mayoría de los males de Maven. Eso es lo que estoy haciendo también, donde sea necesario y adecuado.

Los mejores deseos.

Respondida el 06/02/2009 a las 18:24
fuente por usuario

votos
0

Usamos luntbuild. Es una aplicación web que es muy fácil de usar. Verificará desde CVS / SVN, incrementará automáticamente el número de versión / compilación, ejecutará las tareas de compilación en las secuencias de comandos ant y etiquetará su repositorio con la nueva versión. Puede programar compilaciones automáticas, hacer que lo envíe por correo electrónico o ponerse en contacto con usted a través de mensajería instantánea, también tiene seguridad y compilaciones de dependencias.

Todavía estamos usando la versión 1.2.3 pero veo que es hasta 1.6.0. Simplemente funciona.

http://luntbuild.javaforge.com/

EDITAR: Volver a leer su pregunta. Ahora veo que está buscando algo para reemplazar a Ant. En nuestro caso, Ant no es realmente un problema. Tenemos proyectos configurados en Netbeans, que usa Ant para construir y solo tenemos que implementar algunos enganches en los scripts existentes proporcionados por Netbeans, lo cual es muy fácil de hacer.

EDITAR: parece que puedes llamar a Ant de Groovy. Eso estaría bien porque entonces puedes volver a usar todas las tareas que ya existen para Ant.

http://groovy.codehaus.org/Using+Ant+from+Groovy

Respondida el 06/02/2009 a las 18:35
fuente por usuario

votos
0

Yo uso Rake donde puedo. Donde necesite construir código java, puede usarlo con jruby, o ver algo como: buildr

Respondida el 06/02/2009 a las 18:42
fuente por usuario

votos
1

Quédate con Ant ya que estás construyendo Java. He mezclado Ant / SCons para algunos trabajos de JNI, pero en general me quedaría con Ant especialmente porque tienes una configuración de compilación existente en Ant. Portar a Maven será como empujar una clavija cuadrada a través de una pared sin agujeros.

Adopte su lógica Java personalizada para cualquiera y considere escribir tareas Ant adecuadas en lugar de ejecutar código Java externo. Resolví algunas partes muy complejas de nuestro proceso de compilación simplemente extendiendo Ant para hacer exactamente lo que necesitaba, ej. Administrar recursos de iconos para un gran proyecto de interfaz gráfica de usuario o información de subversión inyectada directamente información sobre manif manifiestas (gracias SVNKit)

Respondida el 06/02/2009 a las 18:43
fuente por usuario

votos
0

Prueba FinalBuilder

Proporciona una interfaz GUI para cualquiera que sea su proceso de creación y tiene una acción nativa para casi todo, más un estudio de acción donde puede crear el suyo propio.

Con un poco de planificación puede ser muy simplificado.

Respondida el 13/02/2009 a las 14:44
fuente por usuario

votos
1

Iría con Ant cualquier día de la semana.

No es perfecto; XML es muy detallado y la implementación de cualquier lógica es casi imposible, pero incluso el ingeniero más subalterno del equipo puede al menos comprender qué hace el archivo ant en un día.

La lógica compleja se puede refactorizar usando java e integrarse en hormiga, si así lo desea. Ant te da todo el poder de Java :)

La resolución de dependencia es difícil sin importar qué sistema use. Con hormiga, las mejores soluciones parecen ser un directorio lib en el que se almacenan todos los archivos jar, o un servidor web interno desde el que se copian las bibliotecas en tiempo de compilación.

También tengo algo de experiencia con Maven 1 y Maven 2. Esa experiencia me dejó con la sensación de que Maven es increíble para proyectos de hobby, pero puede tener complicaciones con el software que necesita mantener con el tiempo.

Veo dos problemas importantes con Maven:

  • Cualquier dependencia que importe usando Maven puede cambiar con el tiempo sin que usted lo sepa, lo que ocasiona problemas extraños.
  • Usted importa las licencias no solo del software que importa directamente utilizando Maven, sino también de las licencias utilizadas por las bibliotecas que se importan indirectamente.

En resumen, no me gusta el hecho de que la compilación depende del momento en que se inicia. Eso puede ser un verdadero problema cuando se produce una versión de corrección de error un año después del lanzamiento de producción.

Por supuesto, estos problemas pueden ser gestionados (tal vez usando un proxy Nexus) pero debe considerarlos antes de reconstruir el sistema de compilación. En mi empresa, decidimos usar Ant para todos los proyectos nuevos y tratar de portar maven 1 y 2 a la hormiga siempre que se presente la ocasión. Es demasiado difícil mantenerlo funcionando.

Mi consejo es que, si tú y tu equipo saben cómo lidiar con la hormiga, intenten refactorizar su archivo ant y no salten a ninguna otra herramienta de compilación. Simplemente toma demasiado tiempo para hacerlo bien; tiempo en que podrías gastar dinero y sobrevivir como compañía :)

Respondida el 13/02/2009 a las 16:07
fuente por usuario

votos
0

Tengo que agregar a esta solución que me parece que no puedo vivir sin ella ... se llama Hudson . Solo toma unos segundos configurarlo y, por lo general, puede salirse con la suya con la mayor parte de lo que ya estén haciendo sus archivos ANT existentes.

Además, Hudson proporciona una excelente manera de construir "cron", ejecutar casos de prueba y generar "artefactos" (por ejemplo, crear productos) de forma que cualquiera pueda descargar.

Es difícil capturar todo lo que puede hacer por ti ... así que solo pruébalo ... no te decepcionará.

Respondida el 18/04/2009 a las 03:36
fuente por usuario

votos
0

Maven es muy buena opción para hacer grandes construye ... en la mayoría de los casos en los que no funciona es muy simple. Las personas entienden mal los conceptos de Maven. Si se esté trabajando con el "modo experto" puede acabar con los módulos más pequeños, que le da una mejor arquitectura en su software. En las otras cosas de mano como Hudson le apoyará en la reducción de los tiempos de construcción mediante el uso de Maven, Hudson causa apoya para construir módulos solamente se pueden cambiar, que no está respaldada por ninguna otra herramienta de construcción. El problema con Maven es aprender y comprender los conceptos de Maven, por ejemplo, la estructura de un proyecto (carpetas, etc.) o un solo artefacto etc. El ciclo de acumulación le apoyará en diferentes áreas: la compilación, empaquetado, implementación y liberación que no es compatible con otras herramientas (sólo si se implementa con la mano ... I'

Respondida el 18/03/2010 a las 07:56
fuente por usuario

votos
-1

Yo uso principalmente de hormigas, pero Maven es también una buena herramienta. Con la hormiga que puede hacer cualquier cosa que desee.

En nuestra empresa, hemos creado un constructor de hormigas de propósito general que hace un montón de cosas: Construir, imágenes Compess, Minify, generar documentación, archivos de paquete .. Es de código abierto y estamos abiertos a mejoras. Puedes obtenerlo aqui:

https://github.com/edertone/TurboBuilder

Respondida el 14/02/2017 a las 05:21
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more