proyecto programa librerias hacer exportar empaquetar distribuir con compilar como archivo aplicacion java performance ant compilation

librerias - exportar programa java



cómo compilar solo los archivos fuente modificados usando ANT (2)

Estoy tratando de escribir Ant Build para compilar la carpeta de origen. Aquí está el destino de mi script para compilar.

<target name="compile" depends="init"> <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true"> <classpath refid="master-classpath"/> </javac> </target>

En mi proyecto, tengo cerca de 1000 archivos .java . Cuando se cambia un solo archivo .java encima, el objetivo tiende a compilar todos los archivos .java . Lo cual hace que el desarrollo sea muy lento. Solo quiero saber si hay alguna forma o código para cambiar el comportamiento de la tarea para compilar solo el archivo .java modificado o modificado en lugar de todo el archivo .java .

Por favor, ayúdame.


Según tengo entendido, compilar solo los archivos java modificados es el comportamiento predeterminado de la tarea ant javac. Ant usa la marca de tiempo de un archivo .java y su correspondiente archivo .class para determinar si es necesario volver a compilar un archivo de Java. Lo he usado en muchos proyectos y nunca he tenido problemas.

Aquí hay algunas cosas que puedes verificar

  1. ¿Su estructura de directorio de árbol de origen coincide con la estructura de su paquete de Java? Por favor, mira ¿ Por qué la hormiga siempre recompila todos mis archivos Java? . Esta es probablemente la razón número 1, ya que está en las preguntas frecuentes.

  2. Veo que tu objetivo de compile depende del objetivo init . ¿Qué hace el objetivo init ? ¿Depende de un objetivo clean o clean los archivos .class?

  3. ¿Cuál es tu versión de hormiga? ¿Puedes probar una versión de hormiga diferente para ver si todavía tienes el mismo problema?

  4. Si ninguno de los anteriores soluciona el problema, después de la compilación, ¿puede verificar manualmente la marca de tiempo del archivo .class y compararlo con la marca de tiempo del archivo .java correspondiente?


Entonces, si no está borrando el directorio de clases en una tarea dependiente, digamos ''limpiar'', la tarea javac compila inherentemente solo los archivos java modificados. Es una función lista para usar que proporciona la tarea javac. Espero eso ayude.