2009-12-07 22 views
0

J'utilise Spring et struts et l'entrée suivante dans 'C: /source/webapp/WebContent/META-INF/context.xml' avec des jetons comme ' jdbc.username, jdbc.pwd, jdbc.server, jdbc.port et jdbc.databasename '.ANT remplacer la tâche - ne pas ramasser la valeur modifiée du fichier de propriétés

<Context cachingAllowed="false" useHttpOnly="true"> 
     <Resource name="jdbc/xxx" auth="Container" type="javax.sql.DataSource" 
     factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 
     maxActive="100" maxIdle="30" maxWait="10000" 
     username="jdbc.username" password="jdbc.pwd" 
     driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
     url="jdbc:sqlserver://jdbc.server:jdbc.port;databaseName=jdbc.databasename;"/> 
    </Context> 

J'ai un répertoire de déploiement - 'C:/déploiement' et en utilisant ANT je construis le répertoire de déploiement de 'C:/source.

J'utilise la tâche ANT remplacer suivante,

<replace file="C:/deployment/META-INF/context.xml" replacefilterfile="C:/deployment/WEB-INF/classes/conf/int.properties" /> 

et remplacer jdbc.username jdbc.pwd, jdbc.server, jdbc.databasename
avec les valeurs des propriétés fichier.

Je ne sais pas comment obtenir les résultats suivants,

Si je change la valeur de « jdbc.server » clé dans le fichier de propriétés, ANT remplacer tâche ne remplace pas la valeur dans C:/déploiement/META-INF/context.xml '. Si je supprime le répertoire 'C:/deployment' et exécute la cible contenant la tâche de remplacement, alors elle change la valeur de 'jdbc.server' dans 'context.xml'.

Je souhaite remplacer la valeur modifiée sans supprimer le répertoire 'C:/deployment'. Comment faire ça Y a-t-il une autre tâche ANT disponible pour cette opération?

Répondre

1

Une fois que vous avez remplacé vos clés, je suppose qu'ils ne sont plus jdbc.username, jdbc.pwd, etc. Par conséquent <replace> tâche ne peut pas les trouver dans votre context.xml et, bien sûr, ne peut pas les remplacer.

Ce dont vous avez besoin est une tâche qui lie les temps de modification context.xml et int.properties. Pour cela, vous pouvez utiliser la tâche OutOfDate de ant-contrib.

+0

Merci Alexander pour me faire savoir ' tâche ne peut pas les trouver dans votre context.xml et, bien sûr, ne peut pas les remplacer' - avant de copier le context.xml, j'ai supprimé le context.xml déjà existant dans le répertoire de déploiement thro 'ANT delete, maintenant la tâche remplace la valeur des clés comme prévu. – SyAu

Questions connexes