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.