2009-09-05 10 views
31

¿Cuál es el punto de 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.¿Qué pasa con todas las herramientas Java Build?

Respuesta

27
  • Dependencia de Gestión de: Las herramientas de construcción siguen un modelo de componentes que proporciona consejos sobre dónde buscar para las 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 mayor abstracción. 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 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. De algo básico como la generación de Javadocs a algo más no trivial como la realización de pruebas y obtener la cobertura de código, análisis estático, generación de informes, etc.

  • Transporte: Algunos sistemas de construcción también gestionan el transporte de archivos - a partir de un desarrollo sistema a un sistema de implementación o producción. Entonces, puedes configurar rutas de transporte, horarios y demás.

Tome un vistazo a algunos servidores de integración continua como CruiseControl o Hudson. Además, el features page of Maven proporciona una idea de lo que quiere saber.

+0

lo siento, pero ¿qué es una dependencia? – cesar

+4

Bueno, si estás haciendo un proyecto personal, entonces probablemente una eclipse será suficiente.Sin embargo, si usted es parte de una organización y está creando un componente que es parte de un sistema más grande, entonces su componente dependería de otros componentes del sistema, que también están en constante desarrollo. Estas son tus dependencias. – Anirudh

+1

Creo que debería decirse que incluso un proyecto personal requiere una herramienta de compilación, ¡y no es difícil usar maven/ant/softsons, o dios no lo quiera, incluso crear! Solo confiar en un IDE para construir es una señal de un desarrollador que no se preocupa por la forma en que trabaja. Un buen artesano usa buenas herramientas y construir herramientas es una de ellas. – Chii

1

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.

+0

Eclipse puede hacer eso ... con el plugin Maven. – topchef

+0

@gigory: ¡así que al final, todavía está maven! – Chii

1

@anonymous,

  • ¿Por qué me suponer que yo, un miembro de de su equipo, está utilizando un IDE todo el tiempo ? Me gustaría construir el código en un servidor de construcción sin cabeza, ¿es eso bien?
  • ¿También me negaría el derecho de usando un motor de integración continua ?
  • ¿Puedo buscar dependencias de un depósito 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 sftp/ftp/Samba.

+4

uhhhhhh ... ¿qué? – cesar

+0

olvídalo, para decirlo simplemente, si eres la única persona que usa tu código o lo tocas, entonces haz lo que quieras. –

+4

Estos son buenos puntos, pero me inclinaría más a votar esto si no lo expresas como estas preguntas condescendientes –

2

El problema con la construcción desde el IDE, es que hay una gran cantidad de 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 construcción que podría llegar a ser casi imposible, incluso compilar el código en digamos un año, ya que tendrá que aplicar ingeniería inversa a todos los ajustes

+0

Este es un buen punto. Puede haber instancias en las que el equipo que realiza las pruebas y la creación y empaquetado de contenido será diferente del equipo de desarrollo y no necesariamente tendrá un IDE instalado (y consecuentemente, no habrá configuraciones IDE). Entonces es importante tener la configuración de compilación fuera de su IDE. – Anirudh

12

En la parte superior de todas las otras 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 copie la salida en algún lugar de un disco donde las últimas 50 construcciones están almacenadas.

0

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.

+0

Tosh. Eclipse solo almacena rutas absolutas si está configurado para hacerlo. Si utiliza contenedores classpath, variables o referencias relativas al espacio de trabajo, no hay rutas absolutas. No culpes a la herramienta por tus malas prácticas. –

0

Los IDE solo funcionan 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, los IDEs parecen más fáciles para los principiantes, pero una vez que tiene la idea, resulta engorroso hacer cosas complejas.

Cambiar la configuración con un IDE significa hacer clic en algún lugar que sea 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 sepas dónde está la biblioteca, etc.

En contraste, no es fácil comenzar con una CLI, pero es más 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 con el código. Decirle a alguien que instale IDE X para compilarlo es mucho más importante que decirle "ejecutar < comando de compilación > en tu shell". Y, por supuesto, no puedes explicar lo anterior a una herramienta externa.

En resumen, el IDE utiliza una herramienta de compilación propiamente dicha. 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 construcción en sí Maven es significativamente diferente de Ant. Puede descargar dependencias especificadas hasta el punto de descargar un servidor web para ejecutar su proyecto.

1

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 que puede construir 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 código base. 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 práctico poder automatizar las cosas.

3

Si usted es un desarrollador individual 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 de las razones de peso para tener un sistema de construcción por separado es asegurar que lo que se ha entregado a sus clientes se compiló a partir de una versión específica del código registrado en su SMC. 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 CI server) también resaltan problemas en el desarrollo, p. 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 independiente 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.

Luego, por supuesto, también están los direct benefits de los sistemas de compilació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. Este 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 I hate Maven para tener una idea).

+0

¿me recomienda maven? – cesar

+0

Para pedir prestado a Churchill. Se ha dicho que Maven es la peor forma de herramienta de compilación excepto todas las demás que se han probado. –

0

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 necesita construir, en qué secuencia y qué dependencias hay 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 de código fuente en código binario.
3.Empaquetando ese código binario.
4. Pruebas de ejecución.
5.Despliegue a los sistemas de producción.