# 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

# NLS_MESSAGEFORMAT_VAR

bin.includes = .,\
               META-INF/,\
               plugin.properties,\
               .options,\
               about.html,\
               copyright.txt,\
               plugin.xml,\
               schema/,\
               about.ini,\
               about.mappings,\
               about.properties,\
               modeling32.png
jars.compile.order = .
source.. = src/
output.. = bin/
src.includes = about.html,\
               copyright.txt,\
               CDOServer.launch,\
               CDOServer_SSL.launch

org.eclipse.emf.cdo.releng.javadoc.project = org.eclipse.emf.cdo.doc
