<?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="Vlib Beans" default="jar">
  
  <property name="module.name" value="vlibbeans"/>
  <property name="module.javac.target" value="1.5"/>
  <property name="module.javac.source" value="1.5"/>  	
  <property name="javadoc.package" value="org.apache.tapestry.vlib.ejb"/>
    
  <property name="root.dir" value="../.."/>
  <property name="module.install.dir" value="${root.dir}/target/vlib"/>
	
  <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"/>
  
  <target name="compile-dependencies">
    <project-dependency artifact="tapestry"/>
    <project-dependency artifact="tapestry-contrib"/>
  	
    <ibiblio-dependency artifact="jboss-j2ee" version="${jboss-j2ee.version}" group="jboss"/>
    <ibiblio-dependency artifact="hivemind"           version="${hivemind.version}" group="hivemind"/>
    <ibiblio-dependency artifact="hivemind-lib"       version="${hivemind.version}" group="hivemind"/>
    <ibiblio-dependency artifact="ognl"               version="${ognl.version}"     group="ognl"/>
  	
  </target>	
  
</project>