<!--
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.
-->
<!--===========================================================================
  This is the build file for the PDI SDK Step Plugin
  
  This build file will use the subfloor.xml file as the default build
  process and should only override the tasks that need to differ from
  the common build file.  
============================================================================-->
<project name="kettle-sdk-step-plugin" basedir="." default="default">

	<description>
	  This build file works with the subfloor.xml file.
	</description>

	<!-- Import the subfloor-pkg.xml file which contains all the default tasks -->
	<import file="build-res/subfloor-pkg.xml" />

	<!--
      AS STATED ABOVE, THE ONLY TASKS THAT SHOULD EXIST IN THIS BUILD FILE ARE
      THE TASKS THAT NEED TO DIFFER FROM THE DEFAULT IMPLEMENTATION OF THE TASKS
      FOUND IN common_build.xml.
    -->

	<!-- 
		override to:
			- include the source directly (this is SDK demo code)
			- include kettle dependency jars
			- include the build folder (used by the SDK user to build the plugin)
			- include eclipse project files for convenience
	-->
	<target name="assemble.copy-libs">
		
		<copy todir="${approot.stage.dir}/lib">
			<fileset dir="${lib.dir}"/>
		</copy>

		<copy todir="${approot.stage.dir}/src">
			<fileset dir="src" excludes="**/.DS_Store" />
		</copy>

		<copy todir="${approot.stage.dir}/build">
			<fileset dir="build" />
		</copy>
		
		<!--<copy file="eclipse/classpath.xml" tofile="${approot.stage.dir}/.classpath">
		    <filterset>
		      <filter token="PROJECT-REVISION" value="${project.revision}"/>
		      <filter token="METASTORE-REVISION" value="${dependency.pentaho-metadata.revision}"/>
		    </filterset>			
		</copy>-->
		<!--<copy file="eclipse/project.xml" tofile="${approot.stage.dir}/.project" />-->
			
	</target>

</project>
