Sustitución build.xml con Build.java - usando Java y las bibliotecas de hormigas como un sistema de construcción

StackOverflow https://stackoverflow.com/questions/972574

Pregunta

he desilusionado con alternativas basadas maravilloso a Ant. AntBuilder no funciona desde dentro de Eclipse, el plugin para Eclipse maravilloso es decepcionante, y Gradle simplemente no está listo todavía.

La documentación hormiga tiene una sección titulada "Uso de las tareas Ant Fuera de hormiga" que da un reclamo para el uso de las bibliotecas de la hormiga de código Java. Hay otro ejemplo aquí:

http://www.mail-archive.com /dev@ant.apache.org/msg16310.html

En teoría parece lo suficientemente simple para reemplazar build.xml con Build.java. La documentación Ant alude a algunas dependencias indocumentados que voy a tener que descubrir (indocumentado desde el punto de vista de la utilización de hormiga desde el interior de Java).

Dado el nivel de decepción con scripts de Ant, me pregunto por qué esto no se ha hecho antes. Tal vez tiene y no es un buen sistema de construcción.

¿Alguien ha intentado construir escribir archivos en Java utilizando las bibliotecas Ant?

¿Fue útil?

Solución

Nuestro sistema de construcción se basa principalmente en exactamente lo que usted describe, y funciona muy bien. Utilizamos las tareas Ant (especialmente las tareas de manipulación de archivos) de los programas Java personalizado que se ensamblan mediante la aplicación de auto-descubrimiento de la disposición módulo de aplicación basada en la convención.

puede a necesitar un poco de pegamento XML Ant, para hacer cosas como compilar los scripts de creación de sí mismos, y para invocar la realidad java para llevar a cabo la construcción, pero es de menor importancia.

No sólo es más legible que java Ant, sobre todo cuando se trata de la ejecución condicional, pero es mucho más rápido. Nuestra construcción basada en Ant utiliza para tomar un minuto para montar un EAR, ahora la versión basada en Java tarda unos 5 segundos.

Otros consejos

Usted tenía una buena idea. Haga clic acantilado tuvo una idea similar: http: //blogs.azulsystems .com / acantilado / 2008/01 / i-hate-makefile.html

Si usted va a través con él yo le aconsejo que sea lo más simple posible para que su sistema de construcción no necesita un [no trivial] propio sistema de construcción.

Dado que Java es compilado, esto es una especie de un problema de la gallina y el huevo. Es necesario construir su Build.java para construir su proyecto.

Ant actualmente soporta secuencias de comandos en línea usando BeanShell, Groovy y un montón de otros, que realmente puede ayudar a reducir la necesidad de ello.

EDIT: En respuesta a varios comentarios de Dean, si su estructura se compone de una larga estrictamente proceedure, entonces sí que no es necesario script de compilación de hormiga. Sin embargo, el poder de la escritura de la estructura es que asegura que las dependencias sólo se ejecutan una vez mientras que tiene en los puntos de entrada mulitiple, algo que está lejos de ser trivial si sacas su cuenta.

Si no te gusta el formato XML, que no está solo, el autor de ANT está de acuerdo con usted. Sin embargo, si su visión del proceso de construcción es algo que puede ser lanzado desde el IDE como su único punto de lanzamiento, diría que sus necesidades de construcción son muy simples.

Edit2: Me upvoted respuesta de skaffman porque habla directamente a la pregunta. En los comentarios parece que estamos de acuerdo en que el enfoque está muy bien para una acumulación de procedimiento, pero no funcionaría para una declarativa, y que necesita al menos un poco xml ANT para rodar la pelota con su Build.java para evitar el pollo y el problema del huevo. Eso parece llegar al quid de la cuestión.

Un punto importante parece haberse perdido aquí.

Ant está escrito en Java y lo que estoy buscando es una mejor manera de utilizar las tareas Ant (API en las bibliotecas ANT) que a través de XML. Para la vida de mí no puedo ver cómo el uso de XML para invocar Java nunca sería mejor o más fácil de utilizar Java para invocar Java.

El único obstáculo es que el enfoque xml se documenta mientras que el enfoque de Java no está documentado por lo que voy a tener que descargar y familiarizarse con el código Ant.

Me contuve de publicar esta pregunta durante un par de semanas porque estaba seguro de que alguien había hecho esto antes y que mi google-foo solo mejora necesaria. Sólo parece tan obvio para utilizar Java para llamar a las API de hormigas en vez de XML que todavía estoy sorprendido de que no había un enfoque basado en Java desarrollado en paralelo para la hormiga, así como el enfoque XML.

El hecho de que es obvio que no significa que alguien ha hecho antes, sin embargo.

Mientras que supongo que es posible, que probablemente sería mejor con scripts de shell y luego escribir un lleno en el programa Java para automatizar simplemente construye.

Se podría ser falta de uno de los usos principales de hormigas, que son la fácil de especificar los conjuntos de archivos y fácil de leer en las propiedades.

he pegado con la hormiga como Groovy es demasiado cerca de escribir una aplicación completa que acaba de construir su aplicación real. Demasiado complicado para el problema.

Durante el uso de tareas Ant dentro de los programas de Java es bastante fácil, probablemente me quedo con archivos de generación Ant si fuera tú. Si estás haciendo algo de desarrollo maravilloso, si Eclipse no hace lo que necesita, puede que usted necesita buscar en otra parte (IntelliJ, NetBeans, etc.).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top