2010-03-10 12 views
10

Esempio: uscitaCome posso modificare i valori delle proprietà in un file usando Ant? Ingresso

SERVER_NAME=server1 
PROFILE_NAME=profile1 
... 

Esempio:

SERVER_NAME=server3 
PROFILE_NAME=profile3 
... 

Questo file userà in applicationContext.xml. Ho provato

<copy file="${web.dir}/jexamples.css_tpl" 
     tofile="${web.dir}/jexamples.css" > 
    <filterchain> 
     <replacetokens> 
      <token key="SERVER_NAME" value="server2"/> 
      <token key="PROFILE_NAME" value="profi"/> 

     </replacetokens> 
    </filterchain> 
</copy> 

ma non funziona.

risposta

15

tuo filterchain è ok, ma il file di origine dovrebbe assomigliare a questo:

[email protected][email protected] 
[email protected][email protected] 

Questo codice (come previsto da voi)

<copy file="${web.dir}/jexamples.css_tpl" 
     tofile="${web.dir}/jexamples.css" > 
    <filterchain> 
     <replacetokens> 
      <token key="SERVER_NAME" value="server2"/> 
      <token key="PROFILE_NAME" value="profi"/> 
     </replacetokens> 
    </filterchain> 
</copy> 

sostituisce i gettoni e ti dà

SERVER_NAME=server2 
PROFILE_NAME=profi 

Se si desidera mantenere il file originale come lo avete ora, in un modo sarebbe quello di utilizzare replaceregex:

<filterchain> 
    <tokenfilter> 
    <replaceregex pattern="^[ \t]*SERVER_NAME[ \t]*=.*$" 
        replace="SERVER_NAME=server2"/> 
    <replaceregex pattern="^[ \t]*PROFILE_NAME[ \t]*=.*$" 
        replace="PROFILE_NAME=profi"/> 
    </tokenfilter> 
</filterchain> 

Questo sarebbe sostituire ogni riga che inizia con SERVER_NAME= da SERVER_NAME=server2 (lo stesso per PROFILE_NAME=). Questo ti restituirà l'output che hai descritto.

[ \t]* è ignorare lo spazio. soluzione

+0

è possibile modificare il valore della proprietà senza gettoni @@? – Andrew

+0

Sì, vedere la mia risposta aggiornata. –

+0

Come posso passare uno o più argomenti alla formica, non voglio usare i file di origine per impostare var e value tali che mostri 'SERVER_NAME = server2' Spero di passare gli arg quando eseguo il file ant form in eclissi. – janwen

5

Cleaner sta usando "propertyfile" formica compito - vedere http://ant.apache.org/manual/Tasks/propertyfile.html

<copy file="${web.dir}/jexamples.css_tpl" 
    tofile="${web.dir}/jexamples.css" /> 
<propertyfile file="${web.dir}/jexamples.css"> 
    <entry key="SERVER_NAME" value="server2"/> 
</propertyfile> 
+0

Questa soluzione funziona perfettamente per me. Volevo che ciò accadesse per il file '.properties' –

+0

Ottima soluzione.Grazie – plinyar

Problemi correlati