# Copyright (c) 2014, 2018 CEA and others.
# All rights reserved.   This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v20.html
#
# Contributors:
#   Kenn Hussey (CEA) - initial API and implementation
#   Kenn Hussey - 535301
#
source.. = src/
output.. = bin/
bin.includes = about.html,\
               plugin.*,\
               .,\
               model/*.ecore,\
               model/*.genmodel,\
               META-INF/
src.includes = about.html,\
               model/*.uml
exclude.. = **/doc-files/**
javacSource = 1.5
javacTarget = 1.5
