Digamos que tengo mis fuentes en mi src/tree (y posiblemente en mi prueba/árbol). Digamos que me gustaría compilar solo parte de ese árbol. Las razones por las que podría querer hacer eso son varias. Solo como ejemplo, podría querer crear el jar más pequeño posible (sin incluir ciertas clases), o podría querer el tiempo de compilación más rápido para lo que estoy compilando. ¡Sin embargo, absolutamente quiero compilar todas las dependencias!compilando solo parte del árbol fuente con ant
Esto se puede lograr fácilmente desde la línea de comandos:
javac -d build/ -cp whatever -sourcepath src src/path/to/MyClass.java
Ahora, ¿cómo se puede hacer eso con la hormiga? La hormiga javac task compiles everything:
la fuente y el directorio de destino serán analizadas de forma recursiva para Java archivos de código fuente para compilar.
se pueden utilizar los parámetros excludes
y includes
, pero son problemáticos para este propósito. De hecho, parece que uno tiene que explícitamente configuración de todo el includes
(no automática de búsqueda de la dependencia), y incluso peor que excludes has priority on includes:
Cuando tanto la inclusión y la exclusión son de segunda mano, sólo los archivos/directorios que coincide con al menos uno de los patrones incluidos y no coinciden con excluyendo los patrones se utilizan.
Por lo tanto, no se puede utilizar
<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath"
excludes="**/*.java" includes="src/path/to/MyClass.java" />
Debido a que no se compilará nada :-(
¿Hay alguna manera de lograr que la línea de comandos sencilla javac
con la hormiga?
EDITADO: Gracias por su respuesta, Sadie, la acepto, porque funciona de la forma en que me preguntaba en t su pregunta. Pero tengo un par de comentarios (demasiado tiempo para estar en el campo de comentarios de su respuesta):
1) Leí la documentación (vea los enlaces de arriba), pero no está claro que con solo includes
usted también está excluyendo todo lo demás
2) cuando se acaba de includes
registros de hormigas algo así como
[javac] Compiling 1 source file to /my/path/to/build
incluso si las dependencias hacen que la compilación (mucho) más de un archivo de origen.
Si desea crear un JAR más pequeño, hágalo en la tarea; tiene todos los atributos necesarios. Si quieres el tiempo de compilación más rápido ... bueno, la compilación en Java siempre lleva solo unos segundos, no veo cómo podrías ganar mucho aquí. ¡Enfócate en algo más útil! –
Depende de qué tan grande es tu proyecto. Me parece que cuando un proyecto supera las 600 o 700 clases, la compilación comienza a disminuir significativamente y tengo que tratar de dividirla de alguna manera. –
@Vladimir Dyuzhev - eso no responde la pregunta del OP. – talonx