<?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="Jakarta Tapestry Project" default="install">

	<property file="config/build.properties" />
	<property file="config/common.properties" />
	<property file="project.properties" />

	<filelist id="project.modules" dir="." files="
			framework/build.xml 
			portlet/build.xml 
			contrib/build.xml 
			annotations/build.xml 
			examples/Workbench/build.xml 
			examples/VlibBeans/build.xml
			examples/Vlib/build.xml" />

	<import file="${hivebuild.dir}/project.xml" />
	<import file="${hivebuild.dir}/license-report.xml" />
	<import file="${hivebuild.dir}/dist.xml" />

	<target name="run-reports">
		<license-report />
	</target>

	<target name="dist-build">
		<antcall target="dist.dist-build" />
		<antcall target="package-examples" />
	</target>

	<target name="package-examples" description="Packages the deployable examples.">

		<fail message="jboss.dir not set" unless="jboss.dir" />

		<announce message="Overwriting files in ${jboss.dir}" />

		<copy todir="${jboss.dir}/server/default" overwrite="true">
			<fileset dir="config/jboss" />
		</copy>

		<copy todir="${jboss.dir}/server/default/deploy" overwrite="true" flatten="true">
			<fileset dir="${local.target.dir}">
				<include name="workbench.war" />
				<include name="vlib/vlib.ear" />
			</fileset>
		</copy>

		<tar destfile="${local.target.dir}/tapestry-examples-${project.version}.tar.gz" compression="gzip">
			<tarfileset dir="${jboss.dir}" prefix="jboss-tapestry-examples-${project.version}">
				<include name="*.xml" />
				<include name="*.html" />
				<include name="bin/" />
				<include name="lib/" />
				<include name="server/default/" />
				<exclude name="server/default/tmp/" />
				<exclude name="server/default/log/" />
				<exclude name="server/default/work/" />
			</tarfileset>
		</tar>
	</target>

</project>
