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

createmodulexml=org.netbeans.nbbuild.CreateModuleXML
jhindexer=org.netbeans.nbbuild.JHIndexer
jarwithmoduleattributes=org.netbeans.nbbuild.JarWithModuleAttributes
makenbm=org.netbeans.nbbuild.MakeNBM
jnlpupdatemanifeststartup=org.netbeans.nbbuild.JNLPUpdateManifestStartup
jnlpupdatemanifestbranding=org.netbeans.nbbuild.JNLPUpdateManifestBranding
makejnlp=org.netbeans.nbbuild.MakeJNLP
makemasterjnlp=org.netbeans.nbbuild.MakeMasterJNLP
makeosgi=org.netbeans.nbbuild.MakeOSGi
parseprojectxml=org.netbeans.nbbuild.ParseProjectXml
genlist=org.netbeans.nbbuild.MakeListOfNBM
arch=org.netbeans.nbbuild.Arch
fixdependencies=org.netbeans.nbbuild.FixDependencies
sortsuitemodules=org.netbeans.nbbuild.SortSuiteModules
branding=org.netbeans.nbbuild.Branding
makeupdatedesc=org.netbeans.nbbuild.MakeUpdateDesc
verifyclasslinkage=org.netbeans.nbbuild.VerifyClassLinkage
fixtestdeps=org.netbeans.nbbuild.FixTestDependencies
shorterpaths=org.netbeans.nbbuild.ShorterPaths
custom-javac=org.netbeans.nbbuild.CustomJavac
convertclusterpath=org.netbeans.nbbuild.ConvertClusterPath
parsemanifest=org.netbeans.nbbuild.ParseManifest
autoupdate=org.netbeans.nbbuild.AutoUpdate
downloadbinaries=org.netbeans.nbbuild.extlibs.DownloadBinaries
processjsannotation=org.netbeans.nbbuild.ProcessJsAnnotationsTask
