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

auxiliary.de-markiewb-netbeans-plugins-eclipse-formatter.eclipseFormatterEnabled=false
auxiliary.de-markiewb-netbeans-plugins-eclipse-formatter.eclipseFormatterLocation=
auxiliary.de-markiewb-netbeans-plugins-eclipse-formatter.enableFormatAsSaveAction=false
auxiliary.de-markiewb-netbeans-plugins-eclipse-formatter.showNotifications=true
auxiliary.de-markiewb-netbeans-plugins-eclipse-formatter.useProjectSettings=false
javac.source=1.8
#javac.compilerargs=-Xlint:unchecked


javadoc.arch=${basedir}/arch.xml
nbm.homepage=http://wildfly.org
nbm.module.author=Emmanuel Hugonnet (ehsavoie)
nbm.needs.restart=true
test.qa-functional.cp.extra=\
${projectui.dir}/modules/org-netbeans-modules-projectui.jar:\
${projects/project.dir}/modules/org-netbeans-modules-project.jar:\
${projectapi.dir}/modules/org-netbeans-modules-projectapi.jar:\
${web.project.dir}/modules/org-netbeans-modules-web-project.jar:\
${api.web.webmodule.dir}/modules/org-netbeans-api-web-webmodule.jar:\
${j2ee.ejbjarproject.dir}/modules/org-netbeans-modules-j2ee-ejbjarproject.jar:\
${j2ee.earproject.dir}/modules/org-netbeans-modules-j2ee-earproject.jar:\
${java.j2seproject.dir}/modules/org-netbeans-modules-java-j2seproject.jar:\
${j2eeserver.dir}/modules/org-netbeans-modules-j2eeserver.jar:\
${project.ant.dir}/modules/org-netbeans-modules-project-ant.jar:\
${openide.dir}/core/openide.jar:\
${java.dir}/modules/org-netbeans-modules-java.jar:\
${api.java.dir}/modules/org-netbeans-api-java.jar:\
${java/javacore.dir}/modules/org-netbeans-modules-javacore.jar:\
${contrib/javax.jmi.reflect.dir}/modules/ext/jmi.jar:\
${contrib/javax.jmi.reflect.dir}/modules/javax-jmi-reflect.jar:\
${contrib/javax.jmi.reflect.dir}/modules/org-netbeans-jmi-javamodel.jar:\
${java/javacore.dir}/modules/org-netbeans-modules-javacore.jar:\
${contrib/mdr.dir}/modules/org-netbeans-modules-mdr.jar:\
${contrib/api.mdr.dir}/modules/org-netbeans-api-mdr.jar:\
${contrib/jmiutils.dir}/modules/ext/jmiutils.jar:\
${websvc.websvcapi.dir}/modules/org-netbeans-modules-websvc-websvcapi.jar:\
${j2ee.dd.webservice.dir}/modules/org-netbeans-modules-websvc-websvcddapi.jar:\
${websvc/dev.dir}/modules/org-netbeans-modules-websvc-dev.jar:\
${openide.filesystems.dir}/core/org-openide-filesystems.jar:\
${openide.filesystems.dir}/lib/org-openide-util.jar:\
${websvc.core.dir}/modules/org-netbeans-modules-websvc-core.jar:\
${refactoring.dir}/modules/org-netbeans-modules-refactoring.jar:\
${j2ee/refactoring.dir}/modules/org-netbeans-modules-j2ee-refactoring.jar:\
${j2ee.api.ejbmodule.dir}/modules/org-netbeans-modules-j2ee-api-ejbmodule.jar:\
${j2ee.ejbcore.dir}/modules/org-netbeans-modules-j2ee-ejbcore.jar:\
${j2ee.ddloaders.dir}/modules/org-netbeans-modules-j2ee-ddloaders.jar:\
${openide.loaders.dir}/modules/org-openide-loaders.jar:\
${openide.nodes.dir}/modules/org-openide-nodes.jar:\
${xml.multiview.dir}/modules/org-netbeans-modules-xml-multiview.jar:\
${core.multiview.dir}/modules/org-netbeans-core-multiview.jar:\
${core.windows.dir}/modules/org-netbeans-core-windows.jar:\
${openide.text.dir}/modules/org-openide-text.jar:\
${openide.windows.dir}/modules/org-openide-windows.jar:\
${j2ee.dd.dir}/modules/org-netbeans-modules-j2ee-dd.jar:\
${j2ee.common.dir}/modules/org-netbeans-modules-j2ee-common.jar:\
${project.libraries.dir}/modules/org-netbeans-modules-project-libraries.jar:\
${projectapi.dir}/modules/org-netbeans-modules-projectuiapi.jar:\
${javaee.wildfly.dir}/modules/org-netbeans-modules-javaee-wildfly.jar:\
${javaee.wildfly.dir}/modules/ext/jsr88javax.jar:\
${openide.dialogs.dir}/modules/org-openide-dialogs.jar

test.config.stableBTD.includes=**/*Test.class
test.config.stableBTD.excludes=\
    org/netbeans/test/*

#keystore=nbproject/private/keystore
#nbm_alias=ehsavoie
