que para modificar home configurar como ambiente agregar java ant

para - que es un path en java



ANT: Cómo modificar java.library.path en un archivo de compilación (4)

La propiedad java.library.path parece ser de solo lectura. Por ejemplo, cuando ejecuta ant en el siguiente archivo de compilación

<project name="MyProject" default="showprops" basedir="."> <property name="java.library.path" value="test"/> <property name="some.other.property" value="test1"/> <target name="showprops"> <echo>java.library.path=${java.library.path}</echo> <echo>some.other.property=${some.other.property}</echo> </target> </project>

usted obtiene

> ant -version Apache Ant version 1.6.5 compiled on June 2 2005 > ant -Djava.library.path=commandlinedefinedpath Buildfile: build.xml showprops: [echo] java.library.path=commandlinedefinedpath [echo] some.other.property=test1 BUILD SUCCESSFUL Total time: 0 seconds

La salida indica que java.library.path no se ha cambiado, pero que some.other.property se configuró correctamente.

Me gustaría saber cómo modificar java.library.path dentro de un archivo de compilación. Especificar java.library.path en la línea de comando de la hormiga no es realmente una opción fácil, porque la ubicación de la ruta de la biblioteca no se conoce en ese momento.

Nota: Me gustaría que esto funcione para poder especificar la ubicación de las bibliotecas nativas utilizadas en una prueba unitaria.


Creo que esto no es posible, principalmente porque la JVM ya comenzó cuando se modifica este valor.

Sin embargo, puede intentar iniciar un nuevo proceso con las variables de env correctas (consulte las tareas de exec o ant)

Creo que lo que quieres es calcular el valor de la biblioteca en tiempo de ejecución y luego usarla para ejecutar la prueba. Al crear un nuevo proceso, puede tener ese nuevo proceso para usar la ruta correcta.


Creo que puedes modificarlo si usas fork = true en tu tarea "java". Puede suministrar java.library.path como una etiqueta sysproperty anidada.


Las propiedades Ant no funcionan de la manera esperada: son inmutables, es decir, no puede cambiar el valor de una propiedad después de haberlo configurado una vez. Si tu corres

ant -Dsome.other.property = commandlinedefinedpath

la salida ya no se mostrará

[echo] some.other.property = test1


Si realmente desea cambiar una propiedad, puede hacerlo en una tarea de Java o en un lenguaje de scripting.

Aquí hay un ejemplo usando Groovy:

<?xml version="1.0"?> <project name="example" default="run"> <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpath="lib/groovy-all-1.1-rc-1.jar"/> <target name="run"> <echo>java.library.path = ${java.library.path}</echo> <groovy> properties["java.library.path"] = "changed" </groovy> <echo>java.library.path = ${java.library.path}</echo> </target> </project>

Precaución, esto viola la propiedad de "propiedad inmutable" de Ant. Úselo bajo su propio riesgo.