#	 ***************************************************************
#	 * Licensed to the Apache Software Foundation (ASF) under one
#	 * or more contributor license agreements.  See the NOTICE file
#	 * distributed with this work for additional information
#	 * regarding copyright ownership.  The ASF licenses this file
#	 * to you under the Apache License, Version 2.0 (the
#	 * "License"); you may not use this file except in compliance
#	 * with the License.  You may obtain a copy of the License at
#	 * 
#	 *   http://www.apache.org/licenses/LICENSE-2.0
#	 * 
#	 * Unless required by applicable law or agreed to in writing,
#	 * software distributed under the License is distributed on an
#	 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#	 * KIND, either express or implied.  See the License for the
#	 * specific language governing permissions and limitations
#	 * under the License.
#	 ***************************************************************
source.ivyde-eclipse.jar = src/java/
output.ivyde-eclipse.jar = bin/
bin.includes = plugin.xml,\
               ivyde-eclipse.jar,\
               icons/,\
               META-INF/,\
               doc/,\
               xsd/,\
               about.ini,\
               schema/
               
module.type = tools

debug.mode=on
deprecation.mode=on
test.fork=on
test.haltonfailure=off
javacSource = 1.4
javacTarget = 1.4
jars.compile.order = ivyde-eclipse.jar
src.includes = plugin.xml,\
               src/,\
               icons/,\
               build.properties,\
               test/,\
               .project,\
               .classpath,\
               .settings/,\
               META-INF/,\
               xsd/,\
               about.ini,\
               schema/,\
               doc/
