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

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

generateSourceReferences = true
