# Copyright (c) 2005, 2018 IBM Corporation, Embarcadero Technologies, 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:
#   IBM - initial API and implementation
#   Kenn Hussey (Embarcadero Technologies) - 204200
#   Christian W. Damus (CEA) - 373643, 401804
#   Kenn Hussey - 535301
#

# NLS_MESSAGEFORMAT_VAR
source.uml2.uml.tests.jar = src/
output.uml2.uml.tests.jar = bin/
bin.includes = about.html,\
               plugin.xml,\
               plugin.properties,\
               test.xml,\
               uml2.uml.tests.jar,\
               META-INF/,\
               profiles/,\
               models/
src.includes = about.html
javacSource = 1.5
javacTarget = 1.5
