# Copyright (c) 2010-2012, 2017 Eike Stepper (Loehne, Germany) 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:
#    Eike Stepper - initial API and implementation

bin.includes = .,\
               META-INF/,\
               plugin.properties,\
               about.html,\
               .options
jars.compile.order = .
source.. = src/
output.. = bin/
src.includes = about.html,\
               CDO AllTests (Objectivity) NonAudit.launch,\
               CDO AllTests (Objectivity) Audit.launch,\
               CDO AllTests (Objectivity) Branching.launch,\
               pom.xml

generateSourceReferences = true
