# Copyright (c) 2013, 2014 CEA 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: 
#   Christian W. Damus (CEA) - initial API and implementation
#   Christian W. Damus (CEA) - 286404
#

source.. = src/
source.ant_tasks/uml2.ant.tasks.jar = tasks/
output.. = bin/
output.ant_tasks/uml2.ant.tasks.jar = bin.tasks/
bin.includes = META-INF/,\
               .,\
               plugin.properties,\
               about.html,\
               plugin.xml,\
               ant_tasks/uml2.ant.tasks.jar
src.includes = about.html,\
               build_ant_tasks.xml
jars.compile.order = .,\
                     ant_tasks/uml2.ant.tasks.jar
jars.extra.classpath = ./emf.ant.tasks.jar
exclude.. = **/doc-files/**
exclude.ant_tasks/. = **/doc-files/**
javacSource = 1.5
javacTarget = 1.5
