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

groovyVersion = 2.6.0-alpha-1
# bundle version format: major('.'minor('.'micro('.'qualifier)?)?)? (first 3 only digits)
groovyBundleVersion = 2.6.0-alpha-1

groovyJUnit_ms = 256m
groovyJUnit_mx = 512m
groovyJUnit_permSize = 64m
groovyJUnit_maxPermSize = 192m

javacMain_mx = 384m
groovycMain_mx = 384m
groovycTest_mx = 640m
groovycExamples_mx = 384m

javaDoc_mx = 640m

# jdk 9
#org.gradle.jvmargs=-ea -Xmx1G
# jdk 6-8
org.gradle.jvmargs=-Xmx1G -XX:MaxPermSize=384m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

# Property below not currently used for gradle build. It was used in the Ant build by forking a JVM instance using
# this property which then called the real groovyDoc Ant task. For now setting JAVA_OPTS globally is the workaround.
#groovyDoc_mx = 600m
