<?xml version="1.0"?>

<!--
  ~ 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="spell.services" default="package" basedir="">
	
	<property name="src.dir" value="src"/>
	<property name="build.dir" value="output/classes"/>
	<property name="output.dir" value="output"/>
	
	<taskdef resource="aQute/bnd/ant/taskdef.properties"
		      classpath="../../tasks/bnd-${bnd.version}.jar"/>
	
	<target name="clean">
		<delete dir="${build.dir}"/>
		<delete dir="${output.dir}"/>
	</target>

	<target name="compile" depends="clean">
		<mkdir dir="${output.dir}"/>
		<mkdir dir="${build.dir}"/>

		<javac   srcdir="${src.dir}"
		         destdir="${build.dir}"
		         debug="on"
		  />
	</target>

	<target name="package" depends="compile">
		<bnd
	   	  classpath="${build.dir}" 
	      failok="false" 
	      exceptions="true" 
	      files="${ant.project.name}.bnd"
		  output="${output.dir}"/>
	</target>

</project>
