# 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.99.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}/platform/libs.junit4/external/junit-4.13.2.jar
test-unit-sys-prop.test.testng.jar=${nb_all}/platform/libs.testng/external/testng-6.14.3.jar
test-unit-sys-prop.test.jcommander.jar=${nb_all}/platform/libs.testng/external/jcommander-1.78.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
