#================================================================================
#  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.
#================================================================================

# NetBeans will automatically set the project basedir "." correctly to
# the parent directory of the nbproject subdirectory
#
# The Tomcat build.properties file defines the confusingly-named "base.path"
# property, which is where the Tomcat dependencies are downloaded.
# If you have followed the Tomcat recommendation and explicitly coded
# a path, it will be used by NetBeans. However, if you have left it to
# default you MUST explicitly code it here, e.g.
#base.path=/home/yourname/sandboxApache/tomcat8-dependencies

# NetBeans syntax checking and code completion of the main source files
# needs all the Ant libraries to be on the classpath. This is achieved
# by the standard build.xml, but needs to be duplicated for NetBeans.
#
ant.includes=${ant.home}/lib/ant.jar:${ant.home}/lib/ant-apache-bcel.jar:${ant.home}/lib/ant-launcher.jar:${ant.home}/lib/ant-apache-oro.jar:${ant.home}/lib/ant-apache-regexp.jar:${ant.home}/lib/ant-jmf.jar:${ant.home}/lib/ant-jsch.jar:${ant.home}/lib/ant-apache-bsf.jar:${ant.home}/lib/ant-apache-log4j.jar:${ant.home}/lib/ant-apache-resolver.jar:${ant.home}/lib/ant-apache-xalan2.jar:${ant.home}/lib/ant-commons-net.jar:${ant.home}/lib/ant-javamail.jar:${ant.home}/lib/ant-junit.jar:${ant.home}/lib/ant-swing.jar:${ant.home}/lib/ant-testutil.jar:${ant.home}/lib/junit.jar:${ant.home}/lib/ant-commons-logging.jar

