ANT替换任务 - 不从属性文件中获取修改后的值

时间:2009-12-07 03:28:04

标签: spring ant

我正在使用Spring和struts并在'C:/source/webapp/WebContent/META-INF/context.xml'中添加以下条目,其中包含'jdbc.username,jdbc.pwd,jdbc.server等标记, jdbc.port和jdbc.databasename'。

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

我有一个部署目录 - 'C:/ deployment'并使用ANT我从'C:/ source'构建部署目录。

我使用以下ANT替换任务,

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

并替换jdbc.username,jdbc.pwd,jdbc.server,jdbc.databasename
使用属性文件中的值。

不确定如何实现以下目标,

如果我在属性文件中更改键'jdbc.server'的值,则ANT替换任务不会替换 'C:/deployment/META-INF/context.xml'中的值。如果我删除目录'C:/ deployment'并执行 包含replace任务的target,然后它会更改'context.xml'中'jdbc.server'的值。

我想在不删除目录“C:/ deployment”的情况下替换更改的值。这该怎么做。是否有其他ANT任务可用于此操作?

1 个答案:

答案 0 :(得分:1)

更换密钥后,我认为它们不再是jdbc.usernamejdbc.pwd等。因此,<replace>任务无法在context.xml中找到它们,当然,不能取代它们。

您需要的是将context.xmlint.properties的修改时间联系起来的任务。为此,您可以使用ant-contrib的OutOfDate任务。