【问题标题】:ANT replace task - not picking up modified value from properties fileANT 替换任务 - 不从属性文件中获取修改后的值
【发布时间】:2010-12-23 21:07:18
【问题描述】:

我正在使用 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”并执行 包含替换任务的目标,然后它会更改 'context.xml' 中的 'jdbc.server' 的值。

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

【问题讨论】:

    标签: spring ant


    【解决方案1】:

    一旦你替换了你的密钥,我认为它们不再是jdbc.usernamejdbc.pwd 等。因此&lt;replace&gt; 任务无法在你的 context.xml 中找到它们,当然也无法替换它们。

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

    【讨论】:

    • 感谢 Alexander 让我知道“ 任务无法在您的 context.xml 中找到它们,当然也无法替换它们”——在复制 context.xml 之前,我删除了已经存在的通过 ANT 删除部署目录中的 context.xml,现在 任务按预期替换了键的值。
    猜你喜欢
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2011-04-10
    相关资源
    最近更新 更多