<?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-account" default="compile">
    <property name="settings.localRepository" value="./target/repo" />
    <property name="artifactId" value="demo-bigbank-account" />	
    
    <!--path id="test.classpath">
    	<pathelement location="target/classes"/>
        <pathelement location="../../modules/tuscany-host-jetty-1.7-SNAPSHOT.jar"/>
        <pathelement location="../../modules/tuscany-binding-jsonrpc-1.7-SNAPSHOT.jar"/>
        <pathelement location="../../modules/tuscany-binding-rmi-1.7-SNAPSHOT.jar"/>
    	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>    	
    	<pathelement location="target/demo-bigbank-account.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">
          <property name="localRepository" value="${settings.localRepository}"/>
          <property name="artifactId" value="${artifactId}"/>
        </ant>
    </target-->
	
    <target name="compile" depends="init">
        <javac srcdir="src/main/java"
               destdir="target/classes"
               debug="on"
               source="1.5"
               target="1.5">
            <classpath>
            	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
            </classpath>
        </javac> 
        <copy todir="target/classes">
            <fileset dir="src/main/resources"/>
        </copy>
        <jar destfile="target/demo-bigbank-account.jar" basedir="target/classes">
            <!--manifest>
                <attribute name="Main-Class" value="${test.class}" /> 
            </manifest-->
        </jar>    	
    </target>		
	
    <!--target name="run" depends="compile">
        <java classname="${test.class}"
              fork="true">
            <classpath>
                <path refid="test.classpath"/>
            </classpath>
        </java>    	
    </target-->

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