2010-03-10 14 views
10

Przykład wkład:Jak zmienić wartość właściwości w pliku za pomocą Ant?

SERVER_NAME=server1 
PROFILE_NAME=profile1 
... 

Przykład Wydajność:

SERVER_NAME=server3 
PROFILE_NAME=profile3 
... 

Plik ten będzie używać applicationContext.xml. Próbowałem już próbować:

<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> 

ale to nie działa.

Odpowiedz

15

Twój filterchain jest ok, ale plik źródłowy powinien wyglądać następująco:

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

ten kod (określonych przez użytkownika)

<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> 

zastępuje znaki i daje

SERVER_NAME=server2 
PROFILE_NAME=profi 

Jeśli chcesz zachować oryginalny plik, jak masz to teraz, jednym ze sposobów byłoby użyć 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> 

Byłoby to zastąpić każdy wiersz rozpoczynający się SERVER_NAME= przez SERVER_NAME=server2 (sam dla PROFILE_NAME=). To spowoduje powrót do wyjścia, które opisałeś.

[ \t]* jest zignorowanie białych znaków.

+0

to możliwe, aby zmienić wartość nieruchomości bez tokenów @@? – Andrew

+0

Tak, zobacz moją zaktualizowaną odpowiedź. –

+0

Jak mogę przekazać jeden lub więcej argumentów do ant, nie chcę używać plików źródłowych, aby ustawić var ​​i wartość takiego pokazujesz "SERVER_NAME = server2" Mam nadzieję przekazać argumenty, gdy uruchamiam plik budowania mrówek w czasie zaćmienia. – janwen

5

Cleaner rozwiązaniem jest użycie "propertyfile" Ant zadanie - patrz 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

To rozwiązanie działa idealnie dla mnie. Chciałem zrobić to z pliku '.properties'. –

+0

Świetne rozwiązanie. Dzięki – plinyar

Powiązane problemy