# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
#  All rights reserved.

bin.includes = about.properties,\
               about.mappings,\
               about.ini,\
               about.html,\
               .,\
               .settings/,\
               model/,\
               META-INF/,\
               plugin.xml,\
               plugin.properties,\
               LICENSE.txt,\
               license.html,\
               src/,\
               src-gen/,\
               xtend-gen/
jars.compile.order = .
source.. = emf-gen/,\
		   xtend-gen/,\
		   src-gen/,\
		   src/
output.. = target/classes
src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt,\
               license.html
