tutorial how compile classes java ant makefile

how - ¿Cuáles son algunas buenas utilidades de Java?



build.xml java (13)

Bueno, obviamente, están las utilidades clásicas de make (make, gmake, nmake), también hay (creo) algunos sistemas de compilación escritos en Ruby, o tal vez en Python. No son específicos de Java, sino solo sistemas de compilación programables.

Pero ANT ha sido el líder del grupo empujando 8-9 años, y en términos de lo básico, es muy fácil comenzar.

De vuelta en el día, resulta particularmente horrible para compilar Java porque normalmente invocaba el compilador javac para cada archivo individualmente. ANT no sufre de esto, y, tal vez, make podría modificarse para no hacer eso. Pero fue uno de los elementos de ANT que lo hizo tan popular. Fue simplemente rápido.

Aprecio que ANT no sea la solución perfecta, pero seguro que es práctico.

Estoy buscando una utilidad make para crear grandes programas Java. Ya estoy al tanto de ANT, pero quiero ver qué más hay disponible.

Idealmente, debería ser capaz de manejar la rareza del directorio de paquetes .java ->. Class que comete una falla en GNU Make.

Win32, pero multiplataforma es un plus.

EDITAR: Veo algunas desventajas en el uso de ANT, por lo que quería ver otras opciones, aunque probablemente terminaré utilizándolo de todos modos, solo porque funciona.

  • requiere makefiles XML no triviales, "HelloWorld" ya tiene 25 líneas, y cualquier programa más razonable se hace grande rápidamente.
    • Los tutoriales de ant muestran comparaciones de los archivos ant build.xml que son más o menos idénticos a los archivos .bat grandes que solo ejecutan todos los comandos java, solo más tiempo. http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html , ya tengo uno de esos.
    • Xml significa que cada dependencia, variable, objetivo, regla y proyecto tiene un componente adicional, solo hace que las líneas sean difíciles de leer. El impuesto de escuadra de ángulo
  • resuelve todos los problemas incorrectos para mí
    • ant facilita la escritura de las líneas de comando jar y javac, la generación de manifiestos es más fácil, la especificación de los archivos fuente .java es más fácil, la especificación de las propiedades de jvm / java es más fácil, la creación de herramientas de compilación personalizadas es más fácil.
    • ant no hace que las dependencias de la clase java sean más fáciles, y no parece tener un sistema de variables más poderoso, ambas cosas generalmente se resuelven con make utility.

Usaría gnu make, pero no puedo imaginar dónde va a terminar el archivo .class para un archivo .java con una declaración de paquete.


Esto no es tanto una respuesta como una pregunta. ANT es la forma estándar de construir Java. Funciona bien con Java, la gran cantidad de herramientas de Java que existen y con Cruise Control. Entonces, ¿por qué querrías probar algo más?

A menos que tengas una funda que ANT no cubra, te recomendaría que te quedes con ANT.

Por supuesto, me gustaría que una persona más conocedora me señale por qué mi actitud es estúpida y por qué hay buenas razones para buscar alternativas;)


Si estás comenzando un nuevo proyecto, es posible que quieras ver a maven . Es un poco difícil inicialmente, pero maneja un montón de cosas para ti, incluidas las dependencias.

Si ya tiene un proyecto para el que desea crear un archivo de compilación, entonces no tengo ninguna recomendación aparte de la hormiga antes mencionada.


Una alternativa son los controles si quieres algo bastante ligero. Lo he usado un poco y creo que es bastante fácil de entender, especialmente si ya conoces la sintaxis de Python. Otra opción es maven , pero no es simple de ninguna manera. Sin embargo, proporciona muchas instalaciones adicionales, como ayudar a administrar documentos. Sin embargo, no me referiría a él como un reemplazo;)


Olvídate de ANT !!

Apache Maven es el camino a seguir si me preguntas.

La característica que más me gusta es que está integrada en la administración de dependencias. Esto significa que no tiene que verificar JAR de terceros en su proyecto de control de código fuente.

Usted especifica sus dependencias en el POM de maven (Modelo de Objeto del Proyecto - Es básicamente una descripción XML de su proyecto) y maven descarga automáticamente, compila contra ellos y los empaqueta con su aplicación.

Otras características realmente agradables son: Publicación de administración y distribución de versiones - Realiza lanzamientos usando los comandos de la consola Maven. Esta característica etiquetará su código base en el control de la fuente. Obtener una copia limpia, compilarla y empaquetarla para la implementación. Un segundo comando lo cargará a su repositorio para su distribución a otros usuarios finales.

Un repositorio grande y creciente de bibliotecas que ya usan maven. CIERTOS proyectos Apache usan maven. CARGAS más también están a bordo. Vea por usted mismo, aquí está el repositorio principal

Posibilidad de alojar su propio repositorio. - Donde puedes lanzar tus propias compilaciones y subir archivos JAR que no existen en otros repositorios públicos (como la mayoría de los archivos de SUN)



A menos que Maven realmente haya mejorado recientemente, me mantendría alejado de eso. A menos que tengas algún tipo de monstruo de "proyectos múltiples" con un montón de dependencias, por supuesto.

Después de cansarse de ver errores completamente inútiles e inútiles al intentar hacer las cosas más simples (como FTP un archivo de war a un servidor), Maven fue desechado y Ant se desempolvó. No he vuelto a mirar atrás desde entonces.


Ant y Maven son definitivamente los dos estándares. Si ya estás familiarizado con Ant y quieres la administración de la dependencia que viene con Maven, puedes echarle un vistazo a Ivy .

Una cosa que tanto Ant como Maven carecen es estructuras de control verdadero en sus scripts de compilación. Hay complementos que puedes descargar para Ant que proporcionan parte de este control, pero (de nuevo, si ya estás familiarizado con Ant) puedes echarle un vistazo a Gant, que es un contenedor Groovy para Ant.


Convertí de Ant a Maven 2 y no he vuelto a mirar desde entonces. Ant y Maven 2 maneras diferentes de construir. Con Ant estás dando instrucciones sobre cómo construir cosas. Mientras que con Maven 2 le dices lo que quieres construir. Si tienes una construcción Ant existente, xml, puedes dar un primer paso en la refactorización de tu compilación enviándola en un Maven 2 pom.xml.


jmk . Es primitivo, pero tan pequeño que puedes incrustarlo en un archivo fuente .tar.gz y apenas cambiar su tamaño.


Me gusta usar hormiga con ant4eclipse. Esto me permite configurar dependencias en eclipse, hacer compilaciones de desarrollo y pruebas en eclipse, y hacer compilaciones continuas usando hormiga.


Uso ANT todo el tiempo. Esto se debe a que desarrollo aplicaciones web utilizando Google Web Toolkit (GWT), que tiene un paso adicional de compilación del lado del cliente Java en el script java. Con hormiga, todo lo que necesitaba saber es cómo funciona GWT y luego orquesté la construcción yo mismo. Con Maven, tengo que esperar hasta que alguien escriba un plugin. o yo escribo uno yo mismo. Existe la posibilidad de que surjan otros marcos y herramientas que no sigan las convenciones usuales. No tengo que seguir buscando complementos Maven todo el tiempo. Con hormiga, puedo hacer lo que quiera de manera transparente. También me gusta escribir archivos xml. (Tengo que hacerlo porque tengo que escribir varios - web.xml, application.xml, persistence.xml, SqlMap.xml, dataset.xml, etc. Mi punto _ XML es una cosa que debe aprender a agradar)


la hormiga ha sido el líder por años. Pero su build.xml está, bueno, basado en xml, es muy detallado. El manejo de la dependencia se puede lograr al combinarlo con la hiedra .

maven se esfuerza por proporcionar de manera inmediata lo que ofrece el tándem Ant + ivy, es agradable mientras funciona. Si deja de hacer eso y tienes que averiguar dónde se equivoca con la administración de la dependencia, es muy probable que sea el peor infierno que puedas imaginar. También es pom.xml ... está escrito en xml.

sbt es la herramienta de construcción scala real, utiliza hiedra para la administración de dependencias y los archivos de compilación se escriben en una DSL scala. Muy maduro, pero el dialecto scala puede no ser de su agrado.

Los archivos de compilación buildr están especificados en ruby. Compatible con repositorios maven y trae su propia administración de dependencias. La integración de hormigas está ahí, también.

gradle usa groovy para sus archivos de compilación. Además del soporte de maven o ivy, ahora tiene su propio administrador de dependencias después de haber usado hiedra en el pasado y no estar satisfecho. Integración perfecta de hormigas Tiene la sintaxis más fácil de lejos.


hormiga, hiedra, maven, buildr son proyectos de apache.

TL; DR

Verifica gradle o buildr .