# Copyright (c) 2008-2012, 2017, 2018 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/,\
               .,\
               about.html,\
               plugin.properties,\
               .options,\
               plugin.xml
src.includes = about.html,\
               pom.xml

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

generateSourceReferences = true
