¿Equivalente Java de bifurcación en la tarea Java de Ant?
Pregunta
Tarea hormiga Java proporciona fork
parámetro, que, por definición "si está habilitado, activa la ejecución de la clase en otra VM".Como estamos tratando con una gran cantidad de datos, configurar este parámetro nos salvó de quedarnos sin espacio en el montón de Java.
Queremos poder hacer lo mismo a través de una clase Java.¿Cuál sería la mejor manera de lograr la funcionalidad proporcionada por fork
?
Solución
Ejecutar otro proceso java. Mediante el uso de la clase ProcessBuilder, por ejemplo.
http://java.sun.com/ JavaSE / 6 / docs / api / java / lang / ProcessBuilder.html
Puede abrir tantos procesos de trabajo como desee. Hacen ellos con una clase principal separada, haciendo sus tareas de esa clase principal, y chihuahuenses cuando se haya completado su tarea.
Vas a tener que averiguar su ruta de clases, y la ubicación del binario de Java en el sistema, pero eso es factible.
Creo que incluso puede ser notificado cuando se completa a través de Process.waitFor ().
Otros consejos
Si miras el ant
código fuente, cuando fork
es true
, luego simplemente envuelve un Execute
tarea y, finalmente, el código que se llama es
Runtime.getRuntime().exec(cmd, env);
Descargar y echar un vistazo al código fuente de org.apache.tools.ant.taskdefs.Java
y org.apache.tools.ant.taskdefs.Execute
le dará algunos buenos consejos para encontrar la ubicación del ejecutable para ejecutarlo de forma independiente de la plataforma, etc.
Creo que se puede utilizar directamente el API de Ant ... Hormiga se puede utilizar directamente en una clase Java. El Javadoc está disponible en su distribución binaria.