<?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="feed" default="jar-core">

    <import file="../build-plugin.xml" />
    
    <!-- Build compilation dependencies -->
    <target name="deps-jar">
      <ant target="jar" inheritall="false" dir="../lib-xml"/>
    </target>

    <!-- Add compilation dependencies to classpath -->
    <path id="plugin.deps">
      <fileset dir="${nutch.root}/build">
        <include name="**/lib-xml/*.jar" />
      </fileset>
    </path>

    <!-- Deploy Unit test dependencies -->
    <target name="deps-test">
      <ant target="deploy" inheritall="false"
           dir="../nutch-extensionpoints" />
      <ant target="deploy" inheritall="false" dir="../protocol-file" />
    </target>
    
    <!-- for junit test -->
    <mkdir dir="${build.test}/data" />
    <copy file="sample/rsstest.rss" todir="${build.test}/data" />
</project>
