使用needxmlfile =“false”的war Ant任务仍然抱怨

时间:2012-05-31 20:16:40

标签: ant web.xml

我的 build.xml 中有以下 war 任务,即使 needxmlfile 设置为 false web.xml 文件不存在时, Ant (版本1.8.2)会抱怨(“ BUILD FAILED ...部署描述符:/ home / .. ./web/WEB-INF/web.xml不存在“)

我错过了什么?

  <target name="war" depends="build">                                                                           
    <mkdir dir="${build.dir}"/>                                                                                 
    <war                                                                                                        
      needxmlfile="false"                                                                                       
      basedir="${webroot.dir}"                                                                                  
      warfile="${build.dir}/${project.distname}.war"                                                            
      webxml="${webinf.dir}/web.xml">                                                                           
      <exclude name="WEB-INF/${build.dir}/**"/>                                                                 
      <exclude name="WEB-INF/src/**"/>                                                                          
      <exclude name="WEB-INF/web.xml"/>                                                                         
     </war>                                                                                                     
  </target>  

2 个答案:

答案 0 :(得分:1)

ANT documentation声明 webxml 属性是强制性的,除非 needxmlfile 属性设置为 true

尝试此操作并使用文件集来提取可选的web.xml文件。

答案 1 :(得分:1)

@ O&#39; Connor:感谢使用文件集提取web.xml的提示。但是我不确定你对needxmlfile设置为true是否正确(至少在我的实验中,我目睹了与你描述的相反)。在任何情况下,最后我都意识到,甚至文件集都不是必需的,因为 war Ant任务显然将所有内容打包在 basedir 下(除非明确排除)所以我现在使用以下war任务,无论是否存在 web.xml 文件,该任务都有效:

<target name="war" depends="build">                                                                      
   <mkdir dir="${build.dir}"/>                                                                            
   <war                                                                                                   
      needxmlfile="false"                                                                                  
      basedir="${webroot.dir}"                                                                             
      destfile="${build.dir}/${project.distname}.war">                                                      
      <exclude name="WEB-INF/${build.dir}/**"/>                                                            
      <exclude name="WEB-INF/src/**"/>                                                                     
    </war>                                                                                                
</target>         

将needxmlfile设置为&#34; true&#34;如果在&#34; waring&#34;。

期间找不到web.xml文件,则会导致Ant抱怨