# 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

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               plugin.xml,\
               copyright.txt,\
               plugin.properties,\
               .options,\
               about.html,\
               about.ini,\
               about.mappings,\
               about.properties,\
               modeling32.png
src.includes = about.html,\
               copyright.txt

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