1#!/usr/bin/env bash 2 3############################################################################## 4## 5## Gradle start up script for UN*X 6## 7############################################################################## 8 9# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10DEFAULT_JVM_OPTS="" 11 12APP_NAME="Gradle" 13APP_BASE_NAME=`basename "$0"` 14 15# Use the maximum available, or set MAX_FD != -1 to use that value. 16MAX_FD="maximum" 17 18warn ( ) { 19 echo "$*" 20} 21 22die ( ) { 23 echo 24 echo "$*" 25 echo 26 exit 1 27} 28 29# OS specific support (must be 'true' or 'false'). 30cygwin=false 31msys=false 32darwin=false 33case "`uname`" in 34 CYGWIN* ) 35 cygwin=true 36 ;; 37 Darwin* ) 38 darwin=true 39 ;; 40 MINGW* ) 41 msys=true 42 ;; 43esac 44 45# Attempt to set APP_HOME 46# Resolve links: $0 may be a link 47PRG="$0" 48# Need this for relative symlinks. 49while [ -h "$PRG" ] ; do 50 ls=`ls -ld "$PRG"` 51 link=`expr "$ls" : '.*-> \(.*\)$'` 52 if expr "$link" : '/.*' > /dev/null; then 53 PRG="$link" 54 else 55 PRG=`dirname "$PRG"`"/$link" 56 fi 57done 58SAVED="`pwd`" 59cd "`dirname \"$PRG\"`/" >/dev/null 60APP_HOME="`pwd -P`" 61cd "$SAVED" >/dev/null 62 63CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 65# Determine the Java command to use to start the JVM. 66if [ -n "$JAVA_HOME" ] ; then 67 if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 # IBM's JDK on AIX uses strange locations for the executables 69 JAVACMD="$JAVA_HOME/jre/sh/java" 70 else 71 JAVACMD="$JAVA_HOME/bin/java" 72 fi 73 if [ ! -x "$JAVACMD" ] ; then 74 die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 76Please set the JAVA_HOME variable in your environment to match the 77location of your Java installation." 78 fi 79else 80 JAVACMD="java" 81 which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 83Please set the JAVA_HOME variable in your environment to match the 84location of your Java installation." 85fi 86 87# Increase the maximum file descriptors if we can. 88if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 MAX_FD_LIMIT=`ulimit -H -n` 90 if [ $? -eq 0 ] ; then 91 if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 MAX_FD="$MAX_FD_LIMIT" 93 fi 94 ulimit -n $MAX_FD 95 if [ $? -ne 0 ] ; then 96 warn "Could not set maximum file descriptor limit: $MAX_FD" 97 fi 98 else 99 warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 fi 101fi 102 103# For Darwin, add options to specify how the application appears in the dock 104if $darwin; then 105 GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106fi 107 108# For Cygwin, switch paths to Windows format before running java 109if $cygwin ; then 110 APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 JAVACMD=`cygpath --unix "$JAVACMD"` 113 114 # We build the pattern for arguments to be converted via cygpath 115 ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 SEP="" 117 for dir in $ROOTDIRSRAW ; do 118 ROOTDIRS="$ROOTDIRS$SEP$dir" 119 SEP="|" 120 done 121 OURCYGPATTERN="(^($ROOTDIRS))" 122 # Add a user-defined pattern to the cygpath arguments 123 if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 fi 126 # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 i=0 128 for arg in "$@" ; do 129 CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 132 if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 else 135 eval `echo args$i`="\"$arg\"" 136 fi 137 i=$((i+1)) 138 done 139 case $i in 140 (0) set -- ;; 141 (1) set -- "$args0" ;; 142 (2) set -- "$args0" "$args1" ;; 143 (3) set -- "$args0" "$args1" "$args2" ;; 144 (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 esac 151fi 152 153# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154function splitJvmOpts() { 155 JVM_OPTS=("$@") 156} 157eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 160exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161