1919# ----------------------------------------------------------------------------
2020
2121# ----------------------------------------------------------------------------
22- # Maven2 Start Up Batch script
22+ # Apache Maven Wrapper startup batch script, version 3.1.1
2323#
2424# Required ENV vars:
2525# ------------------
2626# JAVA_HOME - location of a JDK home dir
2727#
2828# Optional ENV vars
2929# -----------------
30- # M2_HOME - location of maven2's installed home dir
3130# MAVEN_OPTS - parameters passed to the Java VM when running Maven
3231# e.g. to debug Maven itself, use
3332# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
3635
3736if [ -z " $MAVEN_SKIP_RC " ] ; then
3837
38+ if [ -f /usr/local/etc/mavenrc ] ; then
39+ . /usr/local/etc/mavenrc
40+ fi
41+
3942 if [ -f /etc/mavenrc ] ; then
4043 . /etc/mavenrc
4144 fi
@@ -54,38 +57,16 @@ case "`uname`" in
5457 CYGWIN* ) cygwin=true ;;
5558 MINGW* ) mingw=true;;
5659 Darwin* ) darwin=true
57- #
58- # Look for the Apple JDKs first to preserve the existing behaviour, and then look
59- # for the new JDKs provided by Oracle.
60- #
61- if [ -z " $JAVA_HOME " ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then
62- #
63- # Apple JDKs
64- #
65- export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
66- fi
67-
68- if [ -z " $JAVA_HOME " ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then
69- #
70- # Apple JDKs
71- #
72- export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
73- fi
74-
75- if [ -z " $JAVA_HOME " ] && [ -L " /Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then
76- #
77- # Oracle JDKs
78- #
79- export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
80- fi
81-
82- if [ -z " $JAVA_HOME " ] && [ -x " /usr/libexec/java_home" ]; then
83- #
84- # Apple JDKs
85- #
86- export JAVA_HOME=` /usr/libexec/java_home`
87- fi
88- ;;
60+ # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
61+ # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
62+ if [ -z " $JAVA_HOME " ]; then
63+ if [ -x " /usr/libexec/java_home" ]; then
64+ JAVA_HOME=" ` /usr/libexec/java_home` " ; export JAVA_HOME
65+ else
66+ JAVA_HOME=" /Library/Java/Home" ; export JAVA_HOME
67+ fi
68+ fi
69+ ;;
8970esac
9071
9172if [ -z " $JAVA_HOME " ] ; then
@@ -94,49 +75,18 @@ if [ -z "$JAVA_HOME" ] ; then
9475 fi
9576fi
9677
97- if [ -z " $M2_HOME " ] ; then
98- # # resolve links - $0 may be a link to maven's home
99- PRG=" $0 "
100-
101- # need this for relative symlinks
102- while [ -h " $PRG " ] ; do
103- ls=` ls -ld " $PRG " `
104- link=` expr " $ls " : ' .*-> \(.*\)$' `
105- if expr " $link " : ' /.*' > /dev/null; then
106- PRG=" $link "
107- else
108- PRG=" ` dirname " $PRG " ` /$link "
109- fi
110- done
111-
112- saveddir=` pwd`
113-
114- M2_HOME=` dirname " $PRG " ` /..
115-
116- # make it fully qualified
117- M2_HOME=` cd " $M2_HOME " && pwd`
118-
119- cd " $saveddir "
120- # echo Using m2 at $M2_HOME
121- fi
122-
12378# For Cygwin, ensure paths are in UNIX format before anything is touched
12479if $cygwin ; then
125- [ -n " $M2_HOME " ] &&
126- M2_HOME=` cygpath --unix " $M2_HOME " `
12780 [ -n " $JAVA_HOME " ] &&
12881 JAVA_HOME=` cygpath --unix " $JAVA_HOME " `
12982 [ -n " $CLASSPATH " ] &&
13083 CLASSPATH=` cygpath --path --unix " $CLASSPATH " `
13184fi
13285
133- # For Migwn , ensure paths are in UNIX format before anything is touched
86+ # For Mingw , ensure paths are in UNIX format before anything is touched
13487if $mingw ; then
135- [ -n " $M2_HOME " ] &&
136- M2_HOME=" ` (cd " $M2_HOME " ; pwd)` "
13788 [ -n " $JAVA_HOME " ] &&
13889 JAVA_HOME=" ` (cd " $JAVA_HOME " ; pwd)` "
139- # TODO classpath?
14090fi
14191
14292if [ -z " $JAVA_HOME " ]; then
@@ -168,7 +118,7 @@ if [ -z "$JAVACMD" ] ; then
168118 JAVACMD=" $JAVA_HOME /bin/java"
169119 fi
170120 else
171- JAVACMD=" ` which java` "
121+ JAVACMD=" ` \\ unset -f command ; \\ command -v java` "
172122 fi
173123fi
174124
@@ -182,31 +132,29 @@ if [ -z "$JAVA_HOME" ] ; then
182132 echo " Warning: JAVA_HOME environment variable is not set."
183133fi
184134
185- CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
186-
187- # For Cygwin, switch paths to Windows format before running java
188- if $cygwin ; then
189- [ -n " $M2_HOME " ] &&
190- M2_HOME=` cygpath --path --windows " $M2_HOME " `
191- [ -n " $JAVA_HOME " ] &&
192- JAVA_HOME=` cygpath --path --windows " $JAVA_HOME " `
193- [ -n " $CLASSPATH " ] &&
194- CLASSPATH=` cygpath --path --windows " $CLASSPATH " `
195- fi
196-
197135# traverses directory structure from process work directory to filesystem root
198136# first directory with .mvn subdirectory is considered project base directory
199137find_maven_basedir () {
200- local basedir=$( pwd)
201- local wdir=$( pwd)
138+ if [ -z " $1 " ]
139+ then
140+ echo " Path not specified to find_maven_basedir"
141+ return 1
142+ fi
143+
144+ basedir=" $1 "
145+ wdir=" $1 "
202146 while [ " $wdir " != ' /' ] ; do
203147 if [ -d " $wdir " /.mvn ] ; then
204148 basedir=$wdir
205149 break
206150 fi
207- wdir=$( cd " $wdir /.." ; pwd)
151+ # workaround for JBEAP-8937 (on Solaris 10/Sparc)
152+ if [ -d " ${wdir} " ]; then
153+ wdir=` cd " $wdir /.." ; pwd`
154+ fi
155+ # end of workaround
208156 done
209- echo " ${ basedir} "
157+ printf ' %s ' " $( cd " $ basedir" ; pwd ) "
210158}
211159
212160# concatenates all lines of a file
@@ -216,10 +164,115 @@ concat_lines() {
216164 fi
217165}
218166
219- export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:- $(find_maven_basedir)}
167+ BASE_DIR=$( find_maven_basedir " $( dirname $0 ) " )
168+ if [ -z " $BASE_DIR " ]; then
169+ exit 1;
170+ fi
171+
172+ MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:- " $BASE_DIR " } ; export MAVEN_PROJECTBASEDIR
173+ if [ " $MVNW_VERBOSE " = true ]; then
174+ echo $MAVEN_PROJECTBASEDIR
175+ fi
176+
177+ # #########################################################################################
178+ # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
179+ # This allows using the maven wrapper in projects that prohibit checking in binary data.
180+ # #########################################################################################
181+ if [ -r " $BASE_DIR /.mvn/wrapper/maven-wrapper.jar" ]; then
182+ if [ " $MVNW_VERBOSE " = true ]; then
183+ echo " Found .mvn/wrapper/maven-wrapper.jar"
184+ fi
185+ else
186+ if [ " $MVNW_VERBOSE " = true ]; then
187+ echo " Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
188+ fi
189+ if [ -n " $MVNW_REPOURL " ]; then
190+ wrapperUrl=" $MVNW_REPOURL /org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
191+ else
192+ wrapperUrl=" https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
193+ fi
194+ while IFS=" =" read key value; do
195+ case " $key " in (wrapperUrl) wrapperUrl=" $value " ; break ;;
196+ esac
197+ done < " $BASE_DIR /.mvn/wrapper/maven-wrapper.properties"
198+ if [ " $MVNW_VERBOSE " = true ]; then
199+ echo " Downloading from: $wrapperUrl "
200+ fi
201+ wrapperJarPath=" $BASE_DIR /.mvn/wrapper/maven-wrapper.jar"
202+ if $cygwin ; then
203+ wrapperJarPath=` cygpath --path --windows " $wrapperJarPath " `
204+ fi
205+
206+ if command -v wget > /dev/null; then
207+ QUIET=" --quiet"
208+ if [ " $MVNW_VERBOSE " = true ]; then
209+ echo " Found wget ... using wget"
210+ QUIET=" "
211+ fi
212+ if [ -z " $MVNW_USERNAME " ] || [ -z " $MVNW_PASSWORD " ]; then
213+ wget $QUIET " $wrapperUrl " -O " $wrapperJarPath "
214+ else
215+ wget $QUIET --http-user=" $MVNW_USERNAME " --http-password=" $MVNW_PASSWORD " " $wrapperUrl " -O " $wrapperJarPath "
216+ fi
217+ [ $? -eq 0 ] || rm -f " $wrapperJarPath "
218+ elif command -v curl > /dev/null; then
219+ QUIET=" --silent"
220+ if [ " $MVNW_VERBOSE " = true ]; then
221+ echo " Found curl ... using curl"
222+ QUIET=" "
223+ fi
224+ if [ -z " $MVNW_USERNAME " ] || [ -z " $MVNW_PASSWORD " ]; then
225+ curl $QUIET -o " $wrapperJarPath " " $wrapperUrl " -f -L
226+ else
227+ curl $QUIET --user " $MVNW_USERNAME :$MVNW_PASSWORD " -o " $wrapperJarPath " " $wrapperUrl " -f -L
228+ fi
229+ [ $? -eq 0 ] || rm -f " $wrapperJarPath "
230+ else
231+ if [ " $MVNW_VERBOSE " = true ]; then
232+ echo " Falling back to using Java to download"
233+ fi
234+ javaSource=" $BASE_DIR /.mvn/wrapper/MavenWrapperDownloader.java"
235+ javaClass=" $BASE_DIR /.mvn/wrapper/MavenWrapperDownloader.class"
236+ # For Cygwin, switch paths to Windows format before running javac
237+ if $cygwin ; then
238+ javaSource=` cygpath --path --windows " $javaSource " `
239+ javaClass=` cygpath --path --windows " $javaClass " `
240+ fi
241+ if [ -e " $javaSource " ]; then
242+ if [ ! -e " $javaClass " ]; then
243+ if [ " $MVNW_VERBOSE " = true ]; then
244+ echo " - Compiling MavenWrapperDownloader.java ..."
245+ fi
246+ # Compiling the Java class
247+ (" $JAVA_HOME /bin/javac" " $javaSource " )
248+ fi
249+ if [ -e " $javaClass " ]; then
250+ # Running the downloader
251+ if [ " $MVNW_VERBOSE " = true ]; then
252+ echo " - Running MavenWrapperDownloader.java ..."
253+ fi
254+ (" $JAVA_HOME /bin/java" -cp .mvn/wrapper MavenWrapperDownloader " $MAVEN_PROJECTBASEDIR " )
255+ fi
256+ fi
257+ fi
258+ fi
259+ # #########################################################################################
260+ # End of extension
261+ # #########################################################################################
262+
220263MAVEN_OPTS=" $( concat_lines " $MAVEN_PROJECTBASEDIR /.mvn/jvm.config" ) $MAVEN_OPTS "
221264
222- # Provide a "standardized" way to retrieve the CLI args that will
265+ # For Cygwin, switch paths to Windows format before running java
266+ if $cygwin ; then
267+ [ -n " $JAVA_HOME " ] &&
268+ JAVA_HOME=` cygpath --path --windows " $JAVA_HOME " `
269+ [ -n " $CLASSPATH " ] &&
270+ CLASSPATH=` cygpath --path --windows " $CLASSPATH " `
271+ [ -n " $MAVEN_PROJECTBASEDIR " ] &&
272+ MAVEN_PROJECTBASEDIR=` cygpath --path --windows " $MAVEN_PROJECTBASEDIR " `
273+ fi
274+
275+ # Provide a "standardized" way to retrieve the CLI args that will
223276# work with both Windows and non-Windows executions.
224277MAVEN_CMD_LINE_ARGS=" $MAVEN_CONFIG $@ "
225278export MAVEN_CMD_LINE_ARGS
@@ -228,7 +281,7 @@ WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
228281
229282exec " $JAVACMD " \
230283 $MAVEN_OPTS \
284+ $MAVEN_DEBUG_OPTS \
231285 -classpath " $MAVEN_PROJECTBASEDIR /.mvn/wrapper/maven-wrapper.jar" \
232- " -Dmaven.home=${M2_HOME} " " -Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR} " \
233- ${WRAPPER_LAUNCHER} $MAVEN_CMD_LINE_ARGS
234-
286+ " -Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR} " \
287+ ${WRAPPER_LAUNCHER} $MAVEN_CONFIG " $@ "
0 commit comments