###############################################################################
# Copyright (c) 2004, 2010 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
###############################################################################
bin.includes = plugin.xml,\
               plugin.properties,\
               verifyInstall.properties,\
               .options,\
               .,\
               META-INF/,\
               about.html,\
               org.eclipse.jst.server.tomcat.runtime.50.loader.jar,\
               org.eclipse.jst.server.tomcat.runtime.55.loader.jar,\
               org.eclipse.jst.server.tomcat.runtime.60.loader.jar,\
               org.eclipse.jst.server.tomcat.runtime.70.loader.jar
bin.excludes = bin/**,\
               @dot/**,\
               temp.folder/**
source.. = tomcatcore/
src.includes = org.eclipse.jst.server.tomcat.runtime.50.loader-src.zip,\
               org.eclipse.jst.server.tomcat.runtime.55.loader-src.zip,\
               org.eclipse.jst.server.tomcat.runtime.60.loader-src.zip,\
               org.eclipse.jst.server.tomcat.runtime.70.loader-src.zip
