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


#This excludes OFBiz files for Apache RAT tool run by ASF Buildbot,
#    http://creadur.apache.org/rat/

#     Files having a separate license should be ignored.
#     For OFBiz these include
#       - Docbook

#     Also there are several files which can't or shouldn't
#        have a license statement.
#       - README.md files and at large Markdown files
#       - OPTIONAL_LIBRARIES
#       - .project Eclipse project file, only in plugins for now
#          another solution should be provided


#  The following files are excluded:

OPTIONAL_LIBRARIES
README.md
VERSION

.*gitignore
.*hgignore
.sonarcloud.properties
**plugins/.sonarcloud.properties
**/*.md
**/*.adoc
**/robots.txt

**/docbook/**
**/applications/content/dtd/**
**/ping.txt
**/.project
**/plugins/ecommerce/webapp/ecommerce/js/**
**/plugins/rest-api/webapp/docs/**
**/plugins/solr/home/zoo.cfg
**/plugins/solr/home/solrdefault/**
**/plugins/solr/webapp/solr/**
**/plugins/solr/webapp/solr/img/**
**/plugins/solr/webapp/solr/js/**
**/plugins/webpos/webapp/webpos/images/**
**/themes/common-theme/webapp/common-theme/js/*.json
**/themes/common-theme/webapp/common-theme/js/jquery/**
**/themes/common-theme/webapp/common-theme/js/plugins/**
**/themes/common-theme/webapp/images/**
######################### The line below is only for R18.12,
**/themes/common-theme/webapp/common/js/**
######################### should be removed when R18.12 will be deprecated
**/themes/rainbowstone/webapp/rainbowstone/flags/**
**/themes/rainbowstone/webapp/rainbowstone/images/**
**/themes/rainbowstone/webapp/rainbowstone/fonts/quicksand/**
**/themes/helveticus/webapp/helveticus/flags/1x1/*.svg
**/themes/helveticus/webapp/helveticus/flags/4x3/*.svg
**/themes/helveticus/webapp/helveticus/images/*.svg
**/less.min.js
**/SamplePricatTemplate_V1.1.xlsx
**/framework/base/src/test/resources/META-INF/**
**/framework/base/src/main/java/META-INF/**
**/.gradle/**
**/gradle/wrapper/**
**/gradle/no-verification-metadata.xml
**/gradle/verification-keyring.gpg

