# Copyright (c) 2004 - 2009 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
   
# NLS_MESSAGEFORMAT_VAR

output.. = bin/
bin.includes = META-INF/,\
               plugin.properties,\
               .options,\
               about.html,\
               copyright.txt,\
               epl-v10.html,\
               license.html,\
               .,\
               CDOServer (Spring).launch,\
               .springBeans
source.. = src/,\
           context/
jars.compile.order = examples.jar
