2009-03-04 21 views
20

Veo referencias de hormigas pero no entiendo exactamente qué se supone que debe hacer. por lo que he escuchado, se supone que compila tus proyectos, pero ¿no puedo simplemente hacer clic en Ejecutar-> Ejecutar en eclipse?¿Qué es el software de automatización de compilación (por ejemplo, Ant)?

Editar: Creo que debería volver a formular mi pregunta. Ya sé que hormiga es un 'software de automatización de construcció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 está ejecutando, haces clic en el botón "compilar" en eclipse o mediante java en la línea de comandos, y se crea un archivo .jar. Entonces, ¿por qué necesitas 'automatizar' este proceso?

+0

Cambió el título ya que Click Upvote parece estar más buscando información sobre automatización de compilación en general, y no Ant en particular. – Dana

+0

@Dana: la forma en que cambias el título hace que esta sea una pregunta completamente diferente. Esto no refleja la intención inicial de "Hacer clic arriba" – OscarRyz

+0

Bueno, creo que refleja su intención, pero si no, siempre puede revertir. – Dana

Respuesta

20

Ya sé que hormiga 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 está ejecutando, haces clic en el botón "compilar" en eclipse o mediante java en la línea de comandos, y se crea un archivo .jar. Entonces, ¿por qué necesitas 'automatizar' este proceso?

No todo el desarrollo de Java se realiza a través del eclipse y no todos los frascos puede ser construido a partir de la línea de comandos (o debería ser construido 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 todo el tiempo) y quizás pueda invocar esta secuencia de comandos ant a diario a las 6 p.m.

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

  • Conéctese al servidor de subversión.
  • descarga/actualización con la versión más reciente
  • compilar la aplicación
  • ejecutar los casos de prueba
  • paquete de la aplicación (en el tarro, la guerra, el oído, o lo que sea)
  • cometer este generar los 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 exagerado, pero para otros es muy útil.

5

Ant es para automatizar los procesos de compilación de software:

http://en.wikipedia.org/wiki/Apache_Ant

+11

Odio cuando alguien publica un enlace en wikipedia a una respuesta. ¿No crees que ya habría verificado eso antes de publicar aquí? –

+2

@Click: No necesariamente, ciertamente no hubo evidencia de eso en su pregunta original. La respuesta a la pregunta según el título es "automatizar los procesos de compilación". Dado que "hacer clic en un botón" * no es * automatización, no veo de qué manera esta respuesta es mala en absoluto. –

+0

@Click Voto: Pequeña sorpresa, pero estoy de acuerdo con @Jon Skeet; su pregunta fue errónea y mostró todas las indicaciones de que no hizo ni siquiera una investigación básica sobre el tema. @regoeriopvl ciertamente no merece una bandera ofensiva por su respuesta concisa y precisa. – Randolpho

-1

Eclipse es el uso de la hormiga para la construcción, funcionamiento, el despliegue, ...

"Ant es una herramienta de construcción basada en Java En. la teoría es algo así como Make, sin las arrugas de Make y con la portabilidad total del código Java puro ". (de link text

+0

Eclipse no usa la hormiga para la mayoría de las tareas. Netbeans es el que usa la hormiga para todo. –

16

rogeriopvl es absolutamente correcto, pero para responder a su pregunta "¿no puedo hacer eso haciendo clic en Ejecutar-> Ejecutar en Eclipse?": está bien para un proyecto en el que está trabajando por su cuenta , y no necesita una compilación repetible y configurable en múltiples entornos.

Si está trabajando en un proyecto de código abierto, sin embargo, o software profesional que necesita poder compilar en un servidor de compilación, etc. IDE particular para ejecutar no es una buena idea.

+2

Ampliando un poco eso. A menos que sea un desarrollador único, construir una compilación de "producción" en su IDE es una mala idea. Alguien en un sistema diferente puede tener diferentes PATH, jarras, versiones, etc. Ant proporciona una compilación independiente del sistema, que a menudo incluye elementos como pruebas unitarias, etiquetado de fuentes, etc. –

2

Ant es una herramienta de compilación, similar a makefiles (aunque con una sintaxis muy diferente en XML). Si solo está usando Eclipse está bien apegarse a tha y siempre puedes convertir un archivo de compilación Ant en un proyecto de Eclipse (las configuraciones de lanzamiento de Eclipse son entonces, si no recuerdo mal, 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 la compilen o configuren fácilmente, la automatización de la utilización 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.

Hormiga también se puede utilizar para regular de construcciones automatizado (que no desea para golpear Ejecutar en Eclipse cada noche, ¿verdad? :-))

0

También se está refiriendo a la "" Export ant buildfile".

Si escribe su propio guión Ant para la construcción de su aplicación fuera del eclipse, puede escribir sus propios objetivos, que utilizan el Ant task delegar en el build.xml generada .

Además, se puede configurar un proyecto de 'constructores (project properties » Builders) para ejecutar cualquier script (ant u otro) que desee cuando construya el proyecto, manual o automáticamente.

4

Ant permite compilaciones CRISP (completa, repetible, informativa, programable, portátil). Puede encontrar gran información en este presentation por Mike Clark y en su libro, Pragmatic Project Automation.

7

En muchas empresas más grandes (y probablemente algunas más pequeñas), encontrará que el código de producción no está construido por las personas que lo desarrollaron.En cambio, 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 construcción, en un área separada (limpia), posiblemente en un servidor sin cabeza (es decir, sin GUI), revisará el código y ejecutará un script de construcción. El script de compilación será completamente independiente del entorno de escritorio/IDE.

Esto asegura que nada de lo que sucede en la computadora de ningún desarrollador está "contaminando" la construcción. (O, más probablemente, nada fuera de control de código fuente es necesario para que el sistema funcione!)

Así que la mayoría del software que utilice nunca, nunca construirse desde el escritorio de un desarrollador.

PS. También es posible que desee ver la idea de Continuous Integration

+0

esta respuesta es muy útil. Alguna pregunta me viene a la mente mientras leo esta respuesta –

+0

como desarrollador java No quiero utilizar ninguna herramienta de automatización de compilación (por ejemplo, ant o maven o gradle) para mis proyectos. Entonces, ¿qué lenguaje de programación debo aprender para construir una herramienta de automatización? –

6

La respuesta breve es que Ant es una gran manera de crear una compilación de proyecto completa que es independiente de cualquier herramienta en particular que cualquier desarrollador pueda estar utilizando. Sin una construcción independiente, las cosas pueden descontrolarse rápidamente, especialmente para los grandes equipos de proyectos.

Y ahora, para la respuesta larga ... Me han llevado a varios proyectos sin ningún sentido de una compilación independiente. En un proyecto, había un tipo que no era un desarrollador que tenía la tarea de construir y desplegar el software. Había creado 147 archivos de lote separados de Windows para compilar cada EJB, cada servlet y cada componente del cliente. No hubo errores al verificar esta compilación. Todos los mensajes de registro, incluidos los mensajes de error, fueron a la salida estándar. Depende de él reconocer manualmente al leer este registro cuya excepción o mensaje impreso era un mensaje normal y cuyo mensaje era un error. También tuvo que implementar este software que acaba de construir. La implementación fue igual de compleja ya que hubo varios niveles de carga equilibrada. Cada módulo tenía que colocarse en el lugar correcto de forma manual con la configuración de opciones para que coincida con niveles aguas arriba y aguas arriba. Construir y desplegar este software le llevó al menos 3 días usando este método. Por supuesto, solo entonces alguien podría determinar si la construcción "funcionó". Por lo general, después de este período, todos los programadores lucharían para depurar la compilación. Los programadores dirían que mi módulo funciona bien en mi IDE. Simplemente hago clic en ejecutar así, ¿ves?

De hecho, los módulos de software individuales generalmente funcionaban, pero la construcción y el despliegue eran terriblemente ineficaces. Y igual de malo, fue igualmente difícil para cualquier persona implementar una construcción en más de un entorno. La gerencia diría, está bien, ahora tienes 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 realizar una demostración del software. Eso debería ser simple, pero también tomó al menos 2 días, seguido de un período de "depuración de la compilación". Las compilaciones y las implementaciones nunca fueron simples ni nunca precisas. Realmente ralentizó el proyecto.

De todos modos, reemplazamos todo este procedimiento con un mecanismo completo de compilación e implementación basado en Ant. El resultado final fue que se podía crear y desplegar una compilación completa en menos de 30 minutos, completamente automatizada. El técnico de control de calidad que gestiona las compilaciones y las implementaciones puede mantener una pizarra de qué entorno se implementó la construcción y qué grupo estaba usando ese entorno. Esto era algo que simplemente no era posible con el sistema anterior.

11

Ant se utiliza para automatizar un proceso de compilación, pero un proceso de compilación a menudo es mucho más que compilar. Ant tiene "tareas" que se pueden utilizar para realizar funciones útiles diversas. Puede crear su propia tarea para hacer casi cualquier cosa escribiendo una clase Java y diciéndole a la hormiga dónde encontrarla. A continuación, puede mezclar y combinar estas tareas para crear objetivos que ejecutarán un conjunto de tareas.

También puede configurar un entorno dinámico para construir su aplicación.Puede configurar archivos de propiedad para contener variables que pueden usarse en el proceso de compilación, es decir, para mantener 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, instancias de base de datos, etc. podría cambiar. Ant también incluye control de flujo (si, etc.)

Algunas cosas que he visto hacer hormiga:

  • código Compilar
  • Uso de control de versiones a comprobación la última versión o para etiquetar la versión que se está construyendo
  • Ejecutar scripts SQL para construir o reconstruir una base de datos de prueba
  • Copiar archivos de un recurso externo para su inclusión en un proyecto
  • código de paquete en un archivo jAR, la guerra o el oído
  • desplegar una aplicación Web en un servidor de aplicaciones
  • Reiniciar servidor de una aplicación
  • Ejecutar un conjunto de pruebas
  • El análisis estático, es decir CheckStyle o PMD
  • Enviar correo electrónico a un equipo para alertar a la acumulación.
  • Genera archivos según la información de la compilación.
    • Ejemplo: Tengo una jsp en mi aplicación que no hace más que mostrar la información de versión/compilación. Es generado por ant cuando ejecuto una compilación, y el equipo de operaciones de producción comprueba esta página cuando implementan la aplicación para asegurarse de que hayan implementado la compilación correcta.
2

Si hay una cerca de usted que piensa que le dan un montón de CITCON, la integración continua y la Conferencia de Pruebas. Puede hablar con mucha gente sobre los beneficios de la automatización aplicada al desarrollo y prueba de software.

Básicamente, las personas usan Ant (con otras herramientas) para automatizar todo lo que desean que suceda después de una confirmación. Las ventajas básicas de tal automatización son más rápidas, mejores y más económicas.

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

Mejor porque las computadoras son muy buenas para hacer lo mismo de la misma manera todo el tiempo. (Los humanos tienden a apestar.)

Más barato porque tiene menos errores y los errores que ocurren se detectan más rápido y, por lo tanto, son más baratos de arreglar.

0

Joel (Spolsky) tiene a great article en "The Joel Test." 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 construcción.

Cuestiones relacionadas