Abbiamo una proprietà che contiene una serie di argomenti da passare alla JVM in uno script Ant.Ant, jvmarg, proprietà di sistema e preventivi
Esempio (notare le virgolette nella seconda voce):
-Dsql.driver=oracle.jdbc.driver.OracleDriver -Dapp.datasource-properties=URL='jdbc:oracle:thin:@//192.168.56.42:1521/xe':User=user:Password=password
Se stampare il contenuto della variabile con la echo
bersaglio ottengo il risultato atteso
<echo message="${jvm.arguments}"/>
produce
-Dsql.driver=oracle.jdbc.driver.OracleDriver -Dapp.datasource-properties=URL='jdbc:oracle:thin:@//192.168.56.42:1521/xe':User=user:Password=password
Quindi utilizzo la variabile come argomento per JVM.
Esempio:
<junit fork="true" forkmode="once" showoutput="true" printsummary="on">
<jvmarg
line="-XX:MaxPermSize=256m -Xms1024M ${jvm.arguments}"
le virgolette sono silenziosamente rimosse. L'output dettagliato di Ant mi dà
[junit] Executing '/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java' with arguments:
[junit] '-XX:MaxPermSize=256m'
[junit] '-Xms1024M'
[junit] '-Dsql.driver=oracle.jdbc.driver.OracleDriver'
[junit] '-Dapp.datasource-properties=URL=jdbc:oracle:thin:@//192.168.56.42:1521/xe:User=user=password'
Come posso passare una proprietà di sistema alla JVM contenente le virgolette? (singolo o doppio)?
Ho provato a sfuggire a loro, utilizzando virgolette doppie senza alcun effetto.