software despliegues despliegue automatizar automatizacion automaticos automatico aplicaciones java ant build-process

java - despliegues - jenkins despliegue automatico



¿Qué es el software de automatización de compilación(por ejemplo, Ant)? (12)

Ya sé que ant es un ''software de automatización de compilación'', mi pregunta es, ¿qué es exactamente la automatización de compilación? Pensé que se supone que debes probar tu aplicación, y cuando se ejecuta, haces clic en el botón ''construir'' en eclipse o en la línea de comandos de java, y crea un archivo .jar. Entonces, ¿por qué necesitas ''automatizar'' este proceso?

No todo el desarrollo de Java se realiza a través de eclipse y no todos los archivos jar pueden construirse desde la línea de comandos (o deben construirse desde la línea de comandos).

Es posible que también necesite ejecutar casos de prueba, pruebas unitarias y muchos, muchos otros procesos.

Lo que hace la hormiga es proporcionar un mecanismo para automatizar todo este trabajo (para que no tenga que hacerlo todas las veces) y quizás pueda invocar este script de hormiga todos los días a las 6 pm

Por ejemplo, en algunos proyectos, se necesita una compilación diaria, las siguientes son las tareas que pueden automatizarse con ant, para que puedan ejecutarse sin intervención humana.

  • Conectar al servidor de subversion.
  • Descargar / actualizar con la última versión
  • Compilar la aplicación
  • Ejecutar los casos de prueba.
  • Empaque la aplicación (en jarra, guerra, oreja o lo que sea)
  • Cometer esta compilación de binarios a la subversión.
  • Instalar la aplicación en un servidor remoto.
  • Reiniciar el servidor
  • Enviar un correo electrónico con el resumen del trabajo.

Por supuesto, para otros proyectos esto es excesivo, pero para otros es muy útil.

Veo muchas referencias de hormigas pero no entiendo exactamente lo que significa hacer. por lo que he oído que se supone que compila tus proyectos, pero ¿no puedo hacerlo haciendo clic en Ejecutar-> Ejecutar en eclipse?

Edit: Supongo que debería reformular mi pregunta. Ya sé que ant es un ''software de automatización de compilación'', mi pregunta es, ¿qué es exactamente la automatización de compilación? Pensé que se supone que debes probar tu aplicación, y cuando se ejecuta, haces clic en el botón ''construir'' en eclipse o en la línea de comandos de java, y crea un archivo .jar. Entonces, ¿por qué necesitas ''automatizar'' este proceso?



Ant es una herramienta de compilación, similar a makefiles (aunque con una sintaxis muy diferente en XML). Si solo está utilizando Eclipse, puede atenerse a eso y siempre puede convertir un archivo de compilación de Ant en un proyecto de Eclipse (las configuraciones de lanzamiento de Eclipse son, si recuerdo bien, el equivalente de los objetivos de compilación de Ant).

Si desea implementar el código fuente de la aplicación y permitir que otros lo construyan o configuren fácilmente, automatizar que el uso de Ant probablemente no sea una mala idea. Pero generalmente no es una experiencia consistente para los usuarios o al menos no he visto mucho consenso sobre qué objetivos deberían estar allí y qué hacer hasta ahora.

La hormiga también se puede usar para compilaciones automatizadas regulares (no querrás presionar Ejecutar en Eclipse todas las noches, ¿verdad? :-))


Ant permite compilaciones CRISP (completas, repetibles, informativas, programables, portátiles). Puede encontrar gran información al respecto en esta presentation de Mike Clark y en su libro, Pragmatic Project Automation .


Ant se utiliza para automatizar un proceso de compilación, pero un proceso de compilación suele ser mucho más que compilar. Ant tiene "tareas" que pueden usarse para realizar funciones útiles diversas. Puedes crear tu propia tarea para hacer casi cualquier cosa escribiendo una clase java y diciéndole a la hormiga dónde encontrarla. Luego puede mezclar y combinar estas tareas para crear objetivos que ejecutarán un conjunto de tareas.

También puede configurar un entorno dinámico en el que construir su aplicación. Puede configurar archivos de propiedades para contener variables que se pueden usar en el proceso de compilación, es decir, para retener rutas de archivos, rutas de clases, etc. Esto es útil, por ejemplo, para diferenciar entre compilaciones de prueba y producción donde las rutas de implementación, las instancias de bases de datos, etc. podría cambiar. La hormiga también incluye control de flujo (si, etc.)

Algunas de las cosas que he visto hacer son:

  • Compilar código
  • Utilice el control de versiones para verificar la última versión o para etiquetar la versión que se está construyendo.
  • Ejecute scripts sql para construir o reconstruir una base de datos de prueba
  • Copie archivos de un recurso externo para incluirlos en un proyecto.
  • Código de paquete en un archivo jar, war o ear
  • Implementar una aplicación web en un servidor de aplicaciones
  • Reinicie un servidor de aplicaciones
  • Ejecutar un conjunto de pruebas
  • Análisis estático, es decir, CheckStyle o PMD
  • Envía un correo electrónico a un equipo para alertarlos sobre una compilación.
  • Genera archivos basados ​​en información de la compilación.
    • Ejemplo: tengo un jsp en mi aplicación que no hace más que mostrar información de versión / compilación. Es generado por ant cuando ejecuto una compilación, y el equipo de operaciones de producción verifica esta página cuando implementa la aplicación para asegurarse de que haya implementado la compilación correcta.

Eclipse usa ant para construir, ejecutar, desplegar, ...

"Ant es una herramienta de construcción basada en Java. En teoría, es algo así como Make, sin las arrugas de Make y con la plena portabilidad de código Java puro". (desde el texto del enlace)


En muchas compañías más grandes (y probablemente en algunas más pequeñas), encontrará que el código de producción no está creado por las personas que lo desarrollaron . En su lugar, los desarrolladores pueden verificar su código en un repositorio de código fuente y etiquetarlo. Luego le dan esta etiqueta a un equipo de construcción.

El equipo de compilación, en un área separada (limpia), posiblemente en algún servidor sin cabeza (es decir, sin GUI), verificará el código y ejecutará un script de compilación. El script de compilación será completamente independiente del entorno de escritorio / IDE .

Esto garantiza que nada de lo que sucede en la computadora de un desarrollador está "contaminando" la construcción. (O, más probablemente, ¡no se requiere ningún control de fuente externa para que el sistema funcione!)

Por lo tanto, la mayoría del software que utilice nunca se construirá desde el escritorio de un desarrollador.

PD. También es posible que desee ver la idea de integración continua.


Joel (Spolsky) tiene un gran artículo sobre "La prueba de Joel". Muchos de ellos giran en torno a poder hacer cosas importantes a menudo, de manera rápida y confiable. Una de esas cosas es tu compilación.


La respuesta corta es que Ant es una excelente manera de crear un proyecto completo que es independiente de cualquier herramienta en particular que cualquier desarrollador pueda estar usando. Sin una compilación independiente, las cosas pueden desordenarse rápidamente, especialmente para equipos de grandes proyectos.

Y ahora, por la larga respuesta ... Me han llevado a varios proyectos sin ningún sentido de una construcción independiente. En un proyecto, había un tipo que no era un desarrollador que tenía la tarea de crear y desplegar el software. Había creado 147 archivos por lotes de Windows separados para compilar cada EJB, cada servlet y cada componente del cliente. No hubo error en la comprobación de esta compilación. Todos los mensajes de registro, incluidos los mensajes de error, pasaron a la salida estándar. Le correspondía a él reconocer manualmente leyendo este registro qué excepción o mensaje impreso era normal y qué mensaje era un error. También tuvo que implementar este software que acaba de construir. La implementación fue igual de compleja ya que había varios niveles de carga equilibrada. Cada módulo tenía que colocarse en el lugar correcto de forma manual con opciones de configuración para que coincidiera con los niveles descendentes y ascendentes. La construcción e implementación de este software le llevó al menos 3 días con este método. Por supuesto, solo entonces alguien podría determinar si la construcción "funcionó". Generalmente, después de este período todos los programadores se apresuraron a depurar la compilación. Los programadores dirían que mi módulo funciona bien en mi IDE. Acabo de hacer clic en Ejecutar así, ¿ves?

De hecho, los módulos de software individuales generalmente funcionaban, pero la compilación y la implementación eran terriblemente ineficaces. Y tan malo, fue igual de difícil para cualquiera implementar una compilación en más de un entorno. La gerencia diría: está bien, ahora tiene esta compilación funcionando en nuestro entorno de pruebas de regresión. Ahora implemente la misma compilación en este otro entorno para que los vendedores puedan hacer una demostración del software que viene. Debería ser sencillo, pero también tomó al menos 2 días, seguido de un período de "depuración de la compilación". Las compilaciones y los despliegues nunca fueron simples ni precisos. Realmente ralentizó el proyecto.

De todos modos, reemplazamos todo este procedimiento con un mecanismo completo de desarrollo e implementación basado en Ant. El resultado final fue que se podía crear e implementar una compilación completa en menos de 30 minutos, completamente automatizada. El responsable de control de calidad que administra las compilaciones y despliegues podría mantener una pizarra en la que el entorno tenía la compilación implementada y el grupo que usaba ese entorno. Esto era algo que simplemente no era posible con el sistema antiguo.


Si hay alguien cercano a usted, creo que CITCON mucho provecho de CITCON , la Conferencia de Pruebas e Integración Continua. Puede hablar con mucha gente sobre los beneficios de la automatización aplicada a la creación y prueba de software.

Básicamente, las personas usan Ant (con otras herramientas) para automatizar todo lo que quieren que suceda después de un compromiso. Las ventajas básicas de dicha automatización son más rápidas, mejores y más baratas.

Más rápido porque las cosas suceden de inmediato sin esperar a que un humano lo haga.

Mejor porque las computadoras son realmente buenas para hacer lo mismo de la misma manera cada vez. (Los humanos tienden a chupar eso).

Más barato porque tiene menos errores y los errores que se producen se detectan antes y, por lo tanto, son más baratos de solucionar.


También se está refiriendo al " Exportar archivo de compilación ".

Si escribe su propio script Ant para compilar su aplicación fuera de eclipse, puede escribir sus propios objetivos que usen la tarea Ant para delegar en el build.xml generado.

Además, puede configurar los ''constructores'' de un project properties » Builders ( project properties » Builders ) para ejecutar cualquier secuencia de comandos (ant o de otro tipo) que desee cuando compile el proyecto, de forma manual o automática.


rogeriopvl es absolutamente correcto, pero para responderle "¿no puedo hacerlo haciendo clic en Ejecutar-> Ejecutar en Eclipse?" Pregunta: eso está bien para un proyecto en el que está trabajando por su cuenta y no necesita una compilación repetible y con secuencias de comandos en múltiples entornos.

Sin embargo, si está trabajando en un proyecto de código abierto, o en un software profesional que necesita poder construir en un servidor de compilación, etc., no es una buena idea requerir que se ejecute un IDE en particular.