###############################################################################
# Copyright (c) 2000, 2004 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
#
#
# Note, this is the template files used to create the
# org.eclipse.wst.source plugin
#
# see org.eclipse.wst.sdk feature and its 
# build.properites file for the the generate statement
# generate.plugin@org.eclipse.wst.source=org.eclipse.wst
#
#
# The plugin.xml and manifest.mf files are created 
# automatically by the build process, but, apparently
# still need to be "included" in the bin spec. 
# note: do not use src.includes, as this "doubles" source!
#
#
bin.includes = about.html, about.ini, about.mappings, about.properties, eclipse32.gif, plugin.properties, plugin.xml, src/**, META-INF/*
#src/**/*.zip, src/**/schema/*.exsd
sourcePlugin = true