# Copyright (c) 2007-2012 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/,\
               .,\
               about.html,\
               .options,\
               plugin.properties,\
               plugin.xml,\
               about.ini,\
               about.mappings,\
               about.properties,\
               modeling32.png
src.includes = about.html

doc.project = org.eclipse.net4j.db.doc

generateSourceReferences = true
