1

我的build.xml中有以下战争任务,即使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>  
4

2 回答 2

1

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

试试这个并使用一个文件集来拉入可选的 web.xml 文件。

于 2012-06-01T22:11:32.113 回答
1

@O'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>         

如果在“waring”期间找不到 web.xml 文件,将 needxmlfile 设置为“true”会导致 Ant 抱怨。

于 2012-06-02T16:38:11.860 回答