# Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) 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:
#    Eike Stepper - initial API and implementation

bin.includes = .,\
               META-INF/,\
               plugin.properties,\
               copyright.txt,\
               about.html,\
               .options
jars.compile.order = .
source.. = src/
output.. = bin/
src.includes = about.html,\
               copyright.txt,\
               CDO AllTests (MongoDB).launch
