<?xml version="1.0"?>

<!--
Copyright 2002-2004 The Apache Software Foundation.
 
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<project default="jar:jar">

  <!-- ================================================================== -->
  <!-- START : C O M M O N S - B U I L D                                  -->
  <!-- ================================================================== -->
  <!-- Required: Look and Feel for documentation within distributions     -->
  <!-- ================================================================== -->
  <postGoal name="xdoc:copy-resources">  
    <copy todir="${basedir}/target/docs/style/" failonerror="false">
      <fileset dir="${basedir}/../commons-build/xdocs/style">
      	<include name='**/*'/>
      	<exclude name='**/CVS/**'/>
      </fileset>
    </copy>
  </postGoal>
  <!-- ================================================================== -->
  <!-- END: C O M M O N S - B U I L D                                     -->
  <!-- ================================================================== -->
  
  <!-- NonStringTestHolder.java contains tests shared by JUnit and Cactus
  tests.  This ugly hack moves the src from /src/test to /src/test-cactus
  so the Cactus tests will compile.  Not sure what is worse, this hack, or
  just duplicating the code!
  -->
  <preGoal name="cactus:compile">
    <copy todir="${basedir}/src/test-cactus/org/apache/commons/configuration">
        <fileset dir="${basedir}/src/test/" includes="**/NonStringTestHolder.java"/>
    </copy>
  </preGoal>
</project>


