2011-04-08 23 views
3

在構建時,我正在使用屬性文件中的變量更新存儲在web.xml文件中的一些變量,有沒有簡化我在這裏執行的操作的方法:用過濾/修改的web.xml構建戰爭

<target name="war-test" depends="compile"> 
      <mkdir dir="${dist}"/> 
      <mkdir dir="${dist}/tmp"/> 
      <copy file="WebContent/WEB-INF/web.xml.templ" tofile="${dist}/tmp/web.xml"> 
        <filterchain> 
          <replacetokens> 
            <token key="smtp.hostname" value="${test.smtp.hostname}"/> 
            <token key="smtp.port" value="${test.smtp.port}"/> 
          </replacetokens> 
        </filterchain> 
      </copy> 
      <war destfile="${dist}/mywarfile-test.war" webxml="${dist}/tmp/web.xml"> 
        <fileset dir="WebContent"> 
          <exclude name="META-INF/**"/> 
          <exclude name="META-INF"/> 
          <exclude name="WEB-INF/**"/> 
          <exclude name="WEB-INF"/> 
        </fileset> 
        <lib dir="lib"> 
          <exclude name="somelibrary.jar"/> 
        </lib> 
        <classes dir="${build}"/> 
      </war> 
      <delete dir="${dist}/tmp"/> 
      <antcall target="clean"/> 
    </target> 

是否需要製作tmp目錄?

回答

1

如果您不想直接將它複製到WebContent/WEB-INF並刪除該文件夾的排除項,則需要將web.xml放在臨時位置。 <war>沒有子元素,可以讓你隨時創建它,就像清單一樣。

正如oers所說,似乎有些奇怪的東西,錯字或類似的東西。 您創建「$ {dist} /metainf/web.xml,但包含」$ {dist} /tmp/web.xml。

<filterset> 
    <filter token="smtp.hostname" value="${test.smtp.hostname}" /> 
    <filter token="smtp.port" value="${test.smtp.port}" /> 
</filterset> 

如果你想少行,你可以用更換過濾器鏈