2010-11-15 14 views
77

De Eclipse, encontré Puedo exportar fácilmente un archivo de compilación Ant para mi proyecto. Proporciona referencias a bibliotecas de terceros y algunos objetivos básicos. Lo estoy usando desde mi archivo de compilación global. Lo único que me molesta de esto, es que si algo se modifica en la estructura del proyecto (como agregar una nueva biblioteca de terceros), tenemos que pensar (sí, a veces puede ser difícil) acerca de la regeneración de ese archivo build.xml. Me pregunto si alguien aquí sabe una forma de actualizarlo automáticamente. Por "automáticamente" quiero decir que no sería necesario pedir explícitamente a Eclipse que lo regenere cada vez que sea necesario. No sé lo que podría ser el desencadenante ...¿Alguna forma de generar el archivo ant build.xml automáticamente desde Eclipse?

¿Alguna idea o conocimiento sobre esto?

Gracias!

MJ

+1

Ha intentado mirar a la adición de un paso constructor personalizado? –

+0

No estoy seguro de cómo podría hacerlo. He visto constructores de proyectos. Creo que podría haber algo allí ... Probablemente podría agregar un generador que generaría el archivo build.xml una vez que se haya completado el "Java Builder" principal. ¿Es esto lo que llamas un paso de constructor? Podría intentar esto si tuviera alguna pista sobre cómo llamar programáticamente la acción export buildfile del proyecto. Dudo que sea posible. – Joanis

+0

Hola M.Joanis, ¿qué solución finalmente encontraste? Estoy tratando de lograr lo mismo, por lo que sería bueno si pudieras compartir tus hallazgos. – theDmi

Respuesta

70

Haga clic derecho en un proyecto de Eclipse luego "Exportar" y luego "General" y luego "archivos de generación Ant". Sin embargo, no creo que sea posible personalizar el formato de salida.

+0

Disculpa, agregué una nota sobre "automáticamente". Como dije, sé que puedo generar y exportar fácilmente ese archivo. Lo que me molesta es tener que decirle a Eclipse que lo regenere cada vez que sea necesario. Me interesaría una manera de activar automáticamente esa acción de "exportar buildfile" en mis proyectos. No veo ningún problema (hasta ahora) con el formato de salida. – Joanis

+0

Entonces, no creo que sea posible en Eclipse estándar. Tal vez algún complemento lo permita ... – Guillaume

+1

Esto parece generar el build.xml para los proyectos web pero no para el oído. ¿Puedo generar automáticamente un build.xml para el archivo ear? –

2

Eche un vistazo al archivo .classpath en su proyecto, que probablemente contiene la mayor parte de la información que desea. La opción más fácil puede ser desplegar su propia "exportación de build.xml", es decir, procesar .classpath en un nuevo build.xml durante la construcción, y luego llamarlo con una subtarea de ant.

Analizar un poco de XML me suena mucho más fácil que enganchar en Eclipse JDT.

+1

Estoy absolutamente de acuerdo en que analizar un archivo XML es mucho más atractivo que escribir un plugin de Eclipse o algo así. Su sugerencia es interesante, pero ¿no es el archivo .classpath "un poco" conciso? El mío proporciona 5 caminos y eso es todo. Lo que es genial con el archivo de compilación Ant creado es que no solo proporciona un objetivo para compilar todo, sino que también proporciona objetivos correctos que permiten ejecutar pruebas JUnit. Lo tendré en mente. – Joanis

+0

Buen punto. Esperaría que Eclipse también tenga en cuenta la "naturaleza del proyecto" al determinar qué objetivos generar en los archivos de compilación. Podrías comprobar cómo Eclipse genera el build.xml, ya que usa hormiga internamente. Pero eso lo lleva a tener que hacer un "proyecto de ciencia" para comprender estos componentes internos de Eclipse. Tal vez los pasos del Constructor son realmente la opción correcta. –

5

He estado tratando de hacer lo mismo. Lo que encontré fue que el "Export Ant Buildfile" se inició en el archivo org.eclipse.ant.internal.ui.datatransfer.AntBuildfileExportPage.java. Esto reside en el complemento org.eclipse.ant.ui.

Para ver la fuente, use la perspectiva de Desarrollo de plug-ins y abra la vista de complementos. A continuación, haga clic derecho en el complemento org.eclipse.ant.ui y seleccione importar como> proyecto fuente.

Mi plan es crear un programa Java para iniciar programáticamente la generación del buildfile y llamarlo en un archivo Ant cada vez que construyo añadiendo el archivo ant a los constructores de mis proyectos (haga clic con el botón derecho en un proyecto , en la pestaña constructores).

+2

Parece un camino muy prometedor. Parece que comprende bien la arquitectura de los plugins de Eclipse. Estaría bien que nos mantenga informados sobre cualquier progreso que realice. ¡Gracias! – Joanis

+0

Actualización: Desafortunadamente, mi trabajo no me dio suficiente tiempo para implementarlo. En cambio, se convirtió en un ritual de equipo que cada vez que agregamos una nueva dependencia, el equipo volvería a exportar los archivos de compilación. No es ideal, pero se autoejecuta porque si alguien intenta ejecutar una compilación en el servidor sin exportar los archivos de compilación, generalmente se rompe. –

1

Soy el que donó el filtro de exportación Ant a Eclipse. Agregué la característica de exportación automática, pero solo a mi plug-in personal eclipse2ant, que aún mantengo para coordinar las correcciones de errores.

Lamentablemente no tengo tiempo para fusionarlo con las compilaciones oficiales de Eclipse.

2

Si todo lo que necesita son las entradas de classpath, hago algo como lo siguiente para usar la ruta de compilación de eclipse.

<xmlproperty file=".classpath" collapseAttributes="true" delimiter=";" /> 

asentando después de que el valor en el camino

<path id="eclipse.classpath"> 
    <pathelement path="${classpath.classpathentry.path}"/> 
</path> 


<target name="compile" depends="init"> 

    <javac srcdir="${src}" destdir="${build}" updatedProperty="compiled"> 
     <classpath refid="eclipse.classpath"/> 
    </javac> 
</target> 
4

que he tenido el mismo problema, nuestro entorno de trabajo se basa en los proyectos de Eclipse Java, y que se necesitan para construir automáticamente un archivo de manera que ANT podríamos usar un servidor de integración continua (Jenkins, en nuestro caso).

pusimos en marcha nuestro propio Eclipse Java para la herramienta Ant, que ya está disponible en GitHub:

ant-build-for-java

Para usarlo, lo llaman:

java -jar ant-build-for-java.jar <folder with repositories> [<.userlibraries file>] 

El primer argumento es la carpeta con los repositorios Buscará la carpeta recursivamente para cualquier archivo .project. La herramienta creará un build.xml en la carpeta especificada.

Opcionalmente, el segundo argumento puede ser un archivo .userlibraries exportado, de Eclipse, necesario cuando cualquiera de los proyectos usa bibliotecas de usuario de Eclipse. La herramienta fue probada solo con bibliotecas de usuarios que usan rutas relativas, así es como las usamos en nuestro repositorio. Esto implica que los archivos JAR y otros archivos necesarios para los proyectos se encuentran dentro de un proyecto de Eclipse, y se hace referencia desde allí.

La herramienta solo admite dependencias de otros proyectos de Eclipse y de bibliotecas de usuarios de Eclipse.

0
  • Seleccionar Archivo> Exportar desde el menú principal (o clic derecho sobre el nombre del proyecto y seleccione Exportar> Exportar ...).
  • En el cuadro de diálogo Exportar, seleccione General> Ant Buildfiles de la siguiente manera: enter image description here

  • Haga clic en Siguiente . En la pantalla Crear archivos Ant Build:

    • Verifique el proyecto en la lista.
    • Desmarque la opción "Crear destino para compilar el proyecto utilizando el compilador de Eclipse", porque queremos crear un archivo de compilación que sea independiente de Eclipse.
    • dejar el nombre de Ant Buildfile como predeterminada: build.xml

enter image description here

  • Haga clic en Finalizar , Eclipse va a generar el archivo build.xml en el directorio de proyecto de la siguiente manera:
    enter image description here
  • Haz doble clic en build.xml archivo para abrir su contenido en el editor de Ant: enter image description here

source

Cuestiones relacionadas