###############################################################################
# Copyright (c) 2010, 2018 Mia-Software
# 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:
#    Fabien Giquel (Mia-Software) - initial API and implementation
#    Nicolas Guyomar (Mia-Software) - initial API and implementatio
#	 Fabien Giquel (Mia-Software) - Bug 533168 - (releng) OutOfMemory during quality postprocessing because large number of checkstyle warnings
# 
bin.includes = .,\
               model/,\
               META-INF/,\
               plugin.xml,\
               about.html,\
               javaToKdmShortcuts.facetSet,\
               javaCompositionShortcuts.querySet,\
               kdmToJavaShortcuts.facetSet,\
               filterJavaComposition.uiCustom,\
               OSGI-INF/
output.. = bin/
jars.compile.order = .
src.includes = about.html
source.. = src/,\
           src-gen/
