ejemplo create java maven-2 ant build-automation buildr

create - text box java



¿Qué pasa con todas las herramientas Java Build? (10)

@anónimo,

  • ¿Por qué asumo que yo, un miembro de su equipo, está usando un IDE todo el tiempo? Me gustaría construir el código en un servidor de desarrollo sin cabeza, ¿está bien?
  • ¿También me negarías el derecho de usar un motor de integración continua?
  • ¿Puedo buscar dependencias de un repositorio central por favor? ¿Cómo puedo hacer eso?
  • ¿Me vincularías a un IDE específico? No puedo ejecutar Eclipse fácilmente en mi muy vieja computadora portátil, pero compraré una nueva.

Quizás también deba desinstalar subversión y usar parches o simplemente carpetas zip en un recurso compartido de sftp / ftp / Samba.

¿De qué sirve usar hormiga, maven y buildr? ¿no funcionará bien el uso de construir en eclipse o netbeans? Solo tengo curiosidad por saber cuál es el propósito y el beneficio de las herramientas de compilación ampliadas.


Además de todas las demás respuestas. La razón principal por la que mantengo mis proyectos edificables sin tener que utilizar NetBeans o Eclipse es que hace que sea mucho más fácil configurar versiones automatizadas (y continuas).

Sería bastante complicado (en comparación) configurar un servidor que de alguna manera inicie Eclipse, actualice el origen del repositorio, compile todo, envíe un correo con el resultado y lo copie en algún lugar de un disco donde las últimas 50 compilaciones se almacenan.


Diferentes características. Por ejemplo, Maven puede escanear tus dependencias e ir a descargarlas, y sus dependencias para que no tengas que hacerlo. Incluso para un proyecto de tamaño mediano puede haber una gran cantidad de dependencias. No creo que Eclipse pueda hacer eso.


El problema con la construcción desde el IDE es que hay muchas configuraciones que afectan la compilación. Cuando utiliza una herramienta de compilación, todas las configuraciones se condensan en una forma más o menos legible en un pequeño conjunto de scripts o archivos de configuración. Esto permite en el caso ideal que alguien ejecute una construcción sin apenas una configuración manual.

Sin la herramienta de compilación, podría ser prácticamente imposible compilar el código, digamos un año, porque tendrás que aplicar ingeniería inversa a todas las configuraciones


En todos los proyectos, los desarrolladores suelen invocar manualmente el proceso de compilación, pero no es adecuado para grandes proyectos, donde es muy difícil hacer un seguimiento de lo que se debe construir, en qué secuencia y qué dependencias hay en el proceso de construcción. Por lo tanto, usamos herramientas de compilación para nuestros proyectos.
Herramientas de compilación Hechas las variedades de la tarea en la aplicación que hará el desarrollador en su vida diaria.
Son
1. Descargue las dependencias.
2.Compilación del código fuente en código binario.
3. Embalaje de ese código binario.
4. Pruebas de ejecución.
5. Despliegue a los sistemas de producción.


Las herramientas de compilación te permiten hacer una compilación de forma automática, sin invenciones humanas, lo cual es esencial si tienes una base de código capaz de crear muchas aplicaciones (como hacemos nosotros).

Queremos estar seguros de que todas y cada una de nuestras aplicaciones pueden compilarse correctamente después de que cambie cualquier base de código. La mejor manera de verificar esto es dejar que una computadora lo haga automáticamente usando una herramienta de integración de Continouos. Simplemente registramos el código, y el servidor de CI detecta que hay un cambio y reconstruye todos los módulos influenciados por ese cambio. Si algo se rompe, la persona responsable se enviará directamente.

Es extremadamente útil para poder automatizar las cosas.


Los IDE solo trabajan en una capa de abstracción más alta.

NetBeans nativamente usa Ant como su herramienta de compilación subyacente y recientemente puede abrir directamente proyectos maven en NetBeans. Por lo tanto, su proyecto típico NetBeans se puede compilar con ant y su proyecto maven ya es un proyecto NetBeans.

Al igual que con cada discusión GUI vs CLI, IDEs parece más fácil para los principiantes, pero una vez que tenga la idea, se vuelve engorroso para hacer cosas complejas.

Cambiar la configuración con un IDE significa hacer clic en algún lugar, lo cual es fácil para cosas básicas, pero para cosas complejas, necesita encontrar el lugar correcto para hacer clic. Además, los IDEs parecen ocultar la información importante. Hacer clic en un botón para agregar una biblioteca es fácil, pero es posible que aún no sepa dónde está la biblioteca, etc.

Por el contrario, no es fácil comenzar con una CLI, pero se vuelve rápidamente fácil. Permite hacer cosas complejas más fácilmente.

Usar Ant o Maven significa que cada uno puede elegir su propio IDE para trabajar uno el código. Decirle a alguien que instale IDE X para compilarlo es mucho más sobrecarga que decir "ejecutar <comando de compilación> en tu caparazón". Y, por supuesto, no puedes explicar lo anterior a una herramienta externa.

En resumen, el IDE usa una herramienta de compilación en sí misma. En el caso de NetBeans Ant (o Maven) se utiliza para que pueda obtener todas las ventajas y desventajas de aquellos. Eclipse usa lo suyo (hasta donde yo sé), pero también puede integrar scripts ant.

En cuanto a las herramientas de compilación, Maven es significativamente diferente de Ant. Puede descargar dependencias especificadas hasta el punto de descargar un servidor web para ejecutar su proyecto.


Para ampliar la respuesta de Jens Schauder, muchas de esas opciones de compilación terminan en algún tipo de archivo .project. Uno de los males de Eclipse es que almacenan nombres de ruta absolutos en todos sus archivos de proyecto, por lo que no puede copiar un archivo de proyecto de una máquina a otra, que podría tener su espacio de trabajo en un directorio diferente.

La razón más fuerte para mí es la construcción automatizada.


Si usted es un desarrollador único o un grupo muy pequeño, puede parecer que un sistema de compilación es solo una sobrecarga. A medida que aumenta el número de desarrolladores, rápidamente se vuelve difícil hacer un seguimiento de todos los cambios y garantizar que los desarrolladores se mantengan sincronizados. Un sistema de compilación reduce la tasa de aumento de esos gastos generales a medida que su equipo crece. Considere los problemas de construir todo el código en Eclipse una vez que tenga más de 100 desarrolladores trabajando en el proyecto.

Una razón de peso para tener un sistema de compilación separado es garantizar que lo que se entregó a sus clientes se compila a partir de una versión específica del código registrado en su SCM . Esto elimina toda una clase de problemas de "trabajo en mi caja" y, en mi opinión, este beneficio vale la pena por sí solo en un tiempo de soporte reducido. Las compilaciones aisladas (por ejemplo, en un servidor de CI ) también destacan problemas en el desarrollo, por ejemplo, donde se han cometido cambios parciales o de ruptura, por lo que tiene la oportunidad de detectar problemas con anticipación.

Una compilación en un IDE construye lo que sea que esté en la caja, mientras que un sistema de compilación autónomo producirá una compilación reproducible directamente desde el SCM. Por supuesto, esto podría hacerse dentro de un IDE, pero AFAIK solo invocando algo como Ant o Maven para manejar todos los pasos de compilación.

Entonces, por supuesto, también existen los beneficios directos de los sistemas de construcción. Un sistema de compilación modular reduce los problemas de copiar y pegar y maneja la resolución de dependencia y otros problemas relacionados con la compilación. Esto debería permitir a los desarrolladores centrarse en la entrega de código. Por supuesto, cada nueva herramienta presenta sus propios problemas y la curva de aprendizaje involucrada puede hacer que parezca que un sistema de compilación es una sobrecarga innecesaria (solo Google odio a Maven para tener una idea).


  • Gestión de dependencias : las herramientas de compilación siguen un modelo de componentes que proporciona pistas sobre dónde buscar dependencias. En Eclipse / Netbeans, tiene que depender de un JAR y realmente no sabe si este JAR se ha actualizado o no. Con estas herramientas de compilación, ''conocen'' las actualizaciones en dependencias (generalmente debido a una buena integración con su repositorio de control de origen), recalculan las dependencias transitivas y se aseguran de que todo esté siempre construido con las últimas versiones.

  • Control de acceso : Java, además del control de acceso de nivel de clase, no tiene una abstracción más alta. Con estas herramientas de compilación puede especificar exactamente de qué proyectos desea depender y controlar la visibilidad y el acceso a un nivel más alto de granularidad.

  • Control personalizado : la compilación de Eclipse / Netbeans siempre crea archivos JAR. Con los mecanismos de compilación personalizados, puede crear su propio archivo personalizado (interno de la empresa) con información adicional de metadatos, si así lo desea.

  • Complementos : hay una variedad de complementos que vienen con herramientas de compilación que pueden hacer varias cosas durante la compilación. Desde algo básico como generar Javadocs a algo más no trivial como ejecutar pruebas y obtener cobertura de código, análisis estático, generación de informes, etc.

  • Transporte : algunos sistemas de compilación también administran el transporte de archivos, desde un sistema de desarrollo hasta un sistema de implementación o producción. Entonces, puedes configurar rutas de transporte, horarios y demás.

Eche un vistazo a algunos servidores de integración continua como CruiseControl o Hudson . Además, la página de características de Maven proporciona una idea de lo que quieres saber.