# Copyright (c) 2006-2012, 2017-2019 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

bin.includes = .,\
               model/,\
               META-INF/,\
               plugin.xml,\
               plugin.properties,\
               about.html,\
               about.ini,\
               about.mappings,\
               about.properties,\
               defs/,\
               ecore/,\
               model1.ecore,\
               modeling32.png,\
               model2.ecore,\
               backup-tests/,\
               My.ecore,\
               .options,\
               sslKey/,\
               SubclassTest1.ecore,\
               SubclassTest2.ecore,\
               logic/
jars.compile.order = .
source.. = src/,\
           model/
output.. = bin/
src.includes = about.html,\
               launches/,\
               pom.xml

generateSourceReferences = true
