2012-03-02 24 views
14

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.

risposta

14

Io uso <jvmarg> con unico valore

<jvmarg value="-ea"/> 
<jvmarg value="-Dapp.URL=URL=${jvmargs}"/> 

Allora questa chiamata con seguente riga ...

ant tests -Djvmargs=\'jdbc:oracle:thin:@//192.168.56.42:1521/xe\':User=user:Password=password -debug 

L'uscita con -debug ha linee previsto da voi.

[junit] '-ea' 
[junit] '-Dapp.URL=URL='jdbc:oracle:thin:@//192.168.56.42:1521/xe':User=user:Password=password' 

Il line è destinata ad elaborare gli argomenti separati da spazi. Potrebbe essere un'analisi e un'elaborazione aggiuntive per gestire l'input con spazi bianchi. Non ho ancora controllato il codice.

Problemi correlati