reconoce programas programa por lotes interno fases externo etapas ejecutar ejecutable ejecución desde creación consola compilar compilacion como comando archivo java ant build-process

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



fases en la creación y ejecución de programas en java (15)

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

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 por defecto para diferentes clientes. Sobre todo me pregunto si hay algo más que Ant / Java que las personas usan.


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 ; ;-))


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


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 utilizado Ant por MUCHOS años, incluida la escritura de una gran biblioteca de código abierto de scripts 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.


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.


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á tareas de compilación en scripts 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


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.


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


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)


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 utilizar 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 :)


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.


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 sus archivos ANT ya están haciendo.

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á.


Maven es realmente una buena opción para hacer grandes construcciones ... en la mayoría de los casos en que no funciona es muy simple. La gente malinterpreta los conceptos de Maven. Si está trabajando con el "método maven", terminará con módulos más pequeños que le brindan una mejor arquitectura en su software. Por otro lado, cosas como Hudson lo ayudarán a reducir los tiempos de construcción mediante el uso de Maven, porque Hudson admite la creación de módulos modificados que no son compatibles con ninguna otra herramienta de compilación. El problema con Maven es aprender y comprender los conceptos de Maven, por ejemplo, la estructura de un proyecto (carpetas, etc.) o solo un artefacto único, etc. El ciclo de compilación lo ayudará en diferentes áreas: compilación, empaquetado, implementación y lanzamiento que no es compatible con otras herramientas (solo si lo implementa a mano ... He escrito muchos scripts Ant grandes para llegar a esto) ... Otro problema, como los cambios a lo largo del tiempo, se producen al ignorar las mejores prácticas y señalar con un alfiler versiones que se utilizan.


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.


Uso principalmente Ant, pero Maven también es una buena herramienta. Con hormiga puedes hacer lo que quieras.

En nuestra empresa, creamos un generador de hormigas de propósito general que hace muchas cosas: compila, combina imágenes, minimiza, genera documentación, empaqueta archivos ... Es de código abierto y estamos abiertos a las mejoras. Puedes obtenerlo aqui:

https://github.com/edertone/TurboBuilder