<?xml version="1.0" encoding="UTF-8"?>
<!--
 * 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.
-->
<project name="bigbank" default="compile">
    <property name="settings.localRepository" value="./target/repo" />
    <property name="artifactId" value="demo-bigbank" />	
    <property name="test.class" value="bigbank.demo.BigBankServer" />
	
    <path id="test.classpath">
        <pathelement location="target/demo-bigbank.jar"/>        
        <pathelement location="../bigbank-account/target/demo-bigbank-account.jar"/>        
    	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>    	
    </path>
	
    <target name="init">
        <mkdir dir="target/classes"/>
        <mkdir dir="target/classes/web"/>
    	<mkdir dir="target/repo"/>
    </target>
	
    <target name="dojo" depends="init">
        <ant antfile="./build-dojo.xml" target="install-dojo-nomaven">
          <property name="localRepository" value="${settings.localRepository}"/>
        </ant>
        
        <ant antfile="./build-dojo.xml" target="unpack-dojo-files-nomaven">
          <property name="localRepository" value="${settings.localRepository}"/>
          <property name="artifactId" value="${artifactId}"/>
        </ant>
    </target>

    <target name="compile" depends="dojo">
        <javac srcdir="src/main/java"
               destdir="target/classes"
               debug="on"
               source="1.5"
               target="1.5">
            <classpath>
            	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
                <pathelement location="../bigbank-account/target/demo-bigbank-account.jar"/>
            </classpath>
        </javac> 
        <copy todir="target/classes">
            <fileset dir="src/main/resources"/>
        </copy>
        <jar destfile="target/demo-bigbank.jar" basedir="target/classes">
            <manifest>
                <attribute name="Main-Class" value="${test.class}" /> 
            </manifest>
        </jar>    	

        <ant antfile="./build-dojo.xml" target="clean-dojo-files">
          <property name="localRepository" value="${settings.localRepository}"/>
          <property name="artifactId" value="${artifactId}"/>
        </ant> 
    </target>		
	
    <target name="run">
        <java classname="${test.class}"
              fork="true">
            <classpath>
                <path refid="test.classpath"/>
            </classpath>
        </java>    	
    </target>

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