# 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 file contains project properties.
# More about how to use the gradle.properties file can be read here:
#   https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties

group = org.apache.kudu
url = https://kudu.apache.org/

# The Maven respository used when uploading artifacts.
mavenPublishUrl = https://repository.apache.org/service/local/staging/deploy/maven2

encoding = UTF-8
# Used by the scalafmt plugin because the encoding property can't be passed.
systemProp.file.encoding = UTF-8

# gpg-agent configuration for artifact signing.
# See https://docs.gradle.org/current/userguide/signing_plugin.html#sec:using_gpg_agent
signing.gnupg.executable = gpg
signing.gnupg.useLegacyGpg = true

# Maximum parallel forks to use while unit testing.
maxParallelForks = 1

# Warn about deprecated gradle usage
org.gradle.warning.mode = summary

# Flags to speed up the gradle build.
# https://guides.gradle.org/performance/
# https://docs.gradle.org/current/userguide/build_environment.html
org.gradle.daemon = true
org.gradle.parallel = true
#org.gradle.caching = true

# The below parameters are used in the `gradle wrapper` to generate `gradlew`
# and `gradle-wrapper.properties`
gradleDistUrlBase = https://services.gradle.org/distributions

# Leverages the wrapper jar checked into the gradle project on github because
# the jar isn't available elsewhere. Using raw.githubusercontent.com instead of
# github.com because github.com servers deprecated TLSv1/TLSv1.1 support some
# time ago, so older versions of curl (built against OpenSSL library that
# doesn't support TLSv1.2) would fail to fetch the jar.
# This jar doesn't change frequently and doesn't need to be updated to match
# the Gradle version to function properly.
wrapperBaseUrl = https://raw.githubusercontent.com/gradle/gradle/v6.8.3/gradle/wrapper

# Increase the default Java heap size for the build to avoid OOM issues.
# https://docs.gradle.org/current/userguide/build_environment.html#sec:configuring_jvm_memory
org.gradle.jvmargs=-Xmx1g -Dfile.encoding=UTF-8
