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

javac.compilerargs=-Xlint -Xlint:-serial
javac.source=1.8
spec.version.base=1.95.0

javadoc.arch=${basedir}/arch.xml
javadoc.apichanges=${basedir}/apichanges.xml

# For XMLSerializer, needed for XMLUtil.write to work w/ namespaces:
test.unit.run.cp.extra=${tools.jar}
test-unit-sys-prop.test.bridge.jar=${netbeans.dest.dir}/${nb.cluster.extide.dir}/ant/nblib/bridge.jar
test-unit-sys-prop.test.ant.home=${netbeans.dest.dir}/${nb.cluster.extide.dir}/ant
test-unit-sys-prop.test.junit.jar=${nb_all}/libs.junit4/external/junit-4.12.jar
test-unit-sys-prop.test.testng.jar=${nb_all}/libs.testng/external/testng-6.8.1-dist.jar
extra.module.files=ant/extra/org-netbeans-modules-java-j2seproject-copylibstask.jar
jnlp.indirect.jars=ant/extra/org-netbeans-modules-java-j2seproject-copylibstask.jar

test.config.stableBTD.includes=**/*Test.class
test.config.stableBTD.excludes=\
    gui/**/*,\
    **/BuildImplTest.class,\
    **/J2SEConfigurationProviderTest.class,\
    **/J2SEProjectGeneratorTest.class
requires.nb.javac=true
