<!--
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.    
-->
<!DOCTYPE project [
<!ENTITY buildDependency SYSTEM "build-dependency.xml">
]>

<project name="sample-helloworld-dojo-webapp" default="compile">
	
	&buildDependency;
	
    <target name="compile">
        <mkdir dir="target/classes"/>
        <javac destdir="target/classes" debug="on" source="1.5" target="1.5">
            <src path="src\main\java"/>
            <classpath>
                <fileset refid="tuscany.jars"/>
                <fileset refid="3rdparty.jars"/>
            </classpath>
        </javac>
        <copy todir="target/classes">
            <fileset dir="src\main\resources"/>
        </copy>
    	
        <ant antfile="./build-dojo.xml" target="install-dojo-nomaven">
          <property name="localRepository" value="./target/repo"/>
        </ant>
        
        <ant antfile="./build-dojo.xml" target="unpack-dojo-files-nomaven">
          <property name="localRepository" value="./target/repo"/>
        </ant>  
    	
        <war destfile="target/sample-helloworld-dojo-webapp.war" webxml="src/main/webapp/WEB-INF/web.xml">
            <fileset dir="src/main/webapp"/>
            <lib refid="tuscany.jars"/>
            <lib refid="3rdparty.jars"/>
            <classes dir="target/classes"/>
        </war>
    	
        <ant antfile="./build-dojo.xml" target="clean-dojo-files">
          <property name="localRepository" value="./target/repo"/>
        </ant>     	
    </target>
	
    <target name="package" depends="compile"/>

    <target name="clean">
        <delete dir="target" includeemptydirs="true"/>
    </target>


</project>
