<?xml version="1.0"?>
<!-- 
   Copyright 2004, 2005 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 name="Tapestry Contrib Library" default="jar">
  
  <property name="module.name" value="tapestry-contrib"/>
  <property name="javadoc.package" value="org.apache.tapestry.contrib.*"/>
    
  <property name="root.dir" value=".."/>
	<property file="${root.dir}/config/build.properties"/>
	<property file="${root.dir}/config/common.properties"/>
  
	<import file="${hivebuild.dir}/jar-module.xml"/>
	<import file="${hivebuild.dir}/javadoc-report.xml"/>
	<import file="${hivebuild.dir}/clover-report.xml"/>  
	<import file="${hivebuild.dir}/hivedoc-report.xml"/>    
	<import file="${hivebuild.dir}/junit-report.xml"/>    
	
	<target name="compile-dependencies">
    <project-dependency artifact="tapestry"/>

    <ibiblio-dependency artifact="commons-logging"    version="${logging.version}"  group="commons-logging"/>
    <ibiblio-dependency artifact="hivemind"           version="${hivemind.version}" group="hivemind"/>
    <ibiblio-dependency artifact="hivemind-lib"       version="${hivemind.version}" group="hivemind"/>
    <ibiblio-dependency artifact="commons-codec"      version="${codec.version}"    group="commons-codec"/>
    <ibiblio-dependency artifact="ognl"               version="${ognl.version}"     group="ognl"/>
    <ibiblio-dependency artifact="jboss-j2ee"         version="3.2.1"               group="jboss"/>
    <ibiblio-dependency artifact="oro"                version="${oro.version}"      group="oro"/>
	<ibiblio-dependency artifact="servletapi"         version="${servlet.version}"  group="servletapi"/>
    
    <ibiblio-dependency artifact="easymock"           version="1.1"                 group="easymock" use="test"/>
    <ibiblio-dependency artifact="easymockclassextension" version="1.1"             group="easymock" use="test"/>
    <ibiblio-dependency artifact="cglib-full"         version="2.0.2"               group="cglib"    use="test"/>
	<ibiblio-dependency artifact="log4j"              version="${log4j.version}"    group="log4j"    use="test"/>
    <ibiblio-dependency artifact="javassist"          version="${javassist.version}" group="javassist" use="test"/>
		
    <!--
    <ibiblio-dependency artifact="bsf"                version="2.3.0"               group="bsf"/>
		<ibiblio-dependency artifact="commons-fileupload" version="1.0"                 group="commons-fileupload"/>    
    <ibiblio-dependency artifact="hivemind-lib"       version="1.0-rc-1"            group="hivemind"/>
    <ibiblio-dependency artifact="oro"                version="2.0.6"               group="oro"/>
		<ibiblio-dependency artifact="javassist"          version="2.6"                 group="jboss"/>
		<ibiblio-dependency artifact="servletapi"         version="2.3"                 group="servletapi"/>
    -->
	</target>	
  
  <target name="run-reports">
    <hivedoc-report/>    	
    <javadoc-report/>
  	<junit-report/>
	<clover-report/>  	  
  </target> 
    
</project>
