1

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

2 に答える 2

1

ANTのドキュメントには、needxmlfile属性がtrueに設定されていない限り、webxml属性は必須 であると記載されています。

これを試して、ファイルセットを使用してオプションのweb.xmlファイルをプルします。

于 2012-06-01T22:11:32.113 に答える
1

@O'Connor: ファイルセットを使用して web.xml をプルするためのヒントをありがとう。ただし、needxmlfileがtrueに設定されていることについてあなたが正しいかどうかはわかりません(少なくとも私の実験では、あなたが説明したこととは反対のことを目撃しました)。いずれにせよ、最終的には、 war Ant タスクは明らかにすべてをbasedirの下にパッケージ化するため (明示的に除外されていない限り) 、ファイルセットでさえ必要ないことに気付きました。そのため、 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 を "true" に設定すると、"waring" 中に web.xml ファイルが見つからない場合に Ant が文句を言うようになります。

于 2012-06-02T16:38:11.860 に答える