1919# ----------------------------------------------------------------------------
2020
2121# ----------------------------------------------------------------------------
22- # Maven2 Start Up Batch script
22+ # Maven Start Up Batch script
2323#
2424# Required ENV vars:
2525# ------------------
3636
3737if [ -z " $MAVEN_SKIP_RC " ] ; then
3838
39+ if [ -f /usr/local/etc/mavenrc ] ; then
40+ . /usr/local/etc/mavenrc
41+ fi
42+
3943 if [ -f /etc/mavenrc ] ; then
4044 . /etc/mavenrc
4145 fi
@@ -54,38 +58,16 @@ case "`uname`" in
5458 CYGWIN* ) cygwin=true ;;
5559 MINGW* ) mingw=true;;
5660 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- ;;
61+ # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
62+ # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
63+ if [ -z " $JAVA_HOME " ]; then
64+ if [ -x " /usr/libexec/java_home" ]; then
65+ export JAVA_HOME=" ` /usr/libexec/java_home` "
66+ else
67+ export JAVA_HOME=" /Library/Java/Home"
68+ fi
69+ fi
70+ ;;
8971esac
9072
9173if [ -z " $JAVA_HOME " ] ; then
@@ -130,13 +112,12 @@ if $cygwin ; then
130112 CLASSPATH=` cygpath --path --unix " $CLASSPATH " `
131113fi
132114
133- # For Migwn , ensure paths are in UNIX format before anything is touched
115+ # For Mingw , ensure paths are in UNIX format before anything is touched
134116if $mingw ; then
135117 [ -n " $M2_HOME " ] &&
136118 M2_HOME=" ` (cd " $M2_HOME " ; pwd)` "
137119 [ -n " $JAVA_HOME " ] &&
138120 JAVA_HOME=" ` (cd " $JAVA_HOME " ; pwd)` "
139- # TODO classpath?
140121fi
141122
142123if [ -z " $JAVA_HOME " ]; then
@@ -168,7 +149,7 @@ if [ -z "$JAVACMD" ] ; then
168149 JAVACMD=" $JAVA_HOME /bin/java"
169150 fi
170151 else
171- JAVACMD=" ` which java` "
152+ JAVACMD=" ` \\ unset -f command ; \\ command -v java` "
172153 fi
173154fi
174155
@@ -187,14 +168,25 @@ CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
187168# traverses directory structure from process work directory to filesystem root
188169# first directory with .mvn subdirectory is considered project base directory
189170find_maven_basedir () {
190- local basedir=$( pwd)
191- local wdir=$( pwd)
171+
172+ if [ -z " $1 " ]
173+ then
174+ echo " Path not specified to find_maven_basedir"
175+ return 1
176+ fi
177+
178+ basedir=" $1 "
179+ wdir=" $1 "
192180 while [ " $wdir " != ' /' ] ; do
193181 if [ -d " $wdir " /.mvn ] ; then
194182 basedir=$wdir
195183 break
196184 fi
197- wdir=$( cd " $wdir /.." ; pwd)
185+ # workaround for JBEAP-8937 (on Solaris 10/Sparc)
186+ if [ -d " ${wdir} " ]; then
187+ wdir=` cd " $wdir /.." ; pwd`
188+ fi
189+ # end of workaround
198190 done
199191 echo " ${basedir} "
200192}
@@ -206,7 +198,94 @@ concat_lines() {
206198 fi
207199}
208200
209- export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:- $(find_maven_basedir)}
201+ BASE_DIR=` find_maven_basedir " $( pwd) " `
202+ if [ -z " $BASE_DIR " ]; then
203+ exit 1;
204+ fi
205+
206+ # #########################################################################################
207+ # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
208+ # This allows using the maven wrapper in projects that prohibit checking in binary data.
209+ # #########################################################################################
210+ if [ -r " $BASE_DIR /.mvn/wrapper/maven-wrapper.jar" ]; then
211+ if [ " $MVNW_VERBOSE " = true ]; then
212+ echo " Found .mvn/wrapper/maven-wrapper.jar"
213+ fi
214+ else
215+ if [ " $MVNW_VERBOSE " = true ]; then
216+ echo " Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
217+ fi
218+ if [ -n " $MVNW_REPOURL " ]; then
219+ jarUrl=" $MVNW_REPOURL /org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
220+ else
221+ jarUrl=" https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
222+ fi
223+ while IFS=" =" read key value; do
224+ case " $key " in (wrapperUrl) jarUrl=" $value " ; break ;;
225+ esac
226+ done < " $BASE_DIR /.mvn/wrapper/maven-wrapper.properties"
227+ if [ " $MVNW_VERBOSE " = true ]; then
228+ echo " Downloading from: $jarUrl "
229+ fi
230+ wrapperJarPath=" $BASE_DIR /.mvn/wrapper/maven-wrapper.jar"
231+ if $cygwin ; then
232+ wrapperJarPath=` cygpath --path --windows " $wrapperJarPath " `
233+ fi
234+
235+ if command -v wget > /dev/null; then
236+ if [ " $MVNW_VERBOSE " = true ]; then
237+ echo " Found wget ... using wget"
238+ fi
239+ if [ -z " $MVNW_USERNAME " ] || [ -z " $MVNW_PASSWORD " ]; then
240+ wget " $jarUrl " -O " $wrapperJarPath " || rm -f " $wrapperJarPath "
241+ else
242+ wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD " $jarUrl " -O " $wrapperJarPath " || rm -f " $wrapperJarPath "
243+ fi
244+ elif command -v curl > /dev/null; then
245+ if [ " $MVNW_VERBOSE " = true ]; then
246+ echo " Found curl ... using curl"
247+ fi
248+ if [ -z " $MVNW_USERNAME " ] || [ -z " $MVNW_PASSWORD " ]; then
249+ curl -o " $wrapperJarPath " " $jarUrl " -f
250+ else
251+ curl --user $MVNW_USERNAME :$MVNW_PASSWORD -o " $wrapperJarPath " " $jarUrl " -f
252+ fi
253+
254+ else
255+ if [ " $MVNW_VERBOSE " = true ]; then
256+ echo " Falling back to using Java to download"
257+ fi
258+ javaClass=" $BASE_DIR /.mvn/wrapper/MavenWrapperDownloader.java"
259+ # For Cygwin, switch paths to Windows format before running javac
260+ if $cygwin ; then
261+ javaClass=` cygpath --path --windows " $javaClass " `
262+ fi
263+ if [ -e " $javaClass " ]; then
264+ if [ ! -e " $BASE_DIR /.mvn/wrapper/MavenWrapperDownloader.class" ]; then
265+ if [ " $MVNW_VERBOSE " = true ]; then
266+ echo " - Compiling MavenWrapperDownloader.java ..."
267+ fi
268+ # Compiling the Java class
269+ (" $JAVA_HOME /bin/javac" " $javaClass " )
270+ fi
271+ if [ -e " $BASE_DIR /.mvn/wrapper/MavenWrapperDownloader.class" ]; then
272+ # Running the downloader
273+ if [ " $MVNW_VERBOSE " = true ]; then
274+ echo " - Running MavenWrapperDownloader.java ..."
275+ fi
276+ (" $JAVA_HOME /bin/java" -cp .mvn/wrapper MavenWrapperDownloader " $MAVEN_PROJECTBASEDIR " )
277+ fi
278+ fi
279+ fi
280+ fi
281+ # #########################################################################################
282+ # End of extension
283+ # #########################################################################################
284+
285+ export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:- " $BASE_DIR " }
286+ if [ " $MVNW_VERBOSE " = true ]; then
287+ echo $MAVEN_PROJECTBASEDIR
288+ fi
210289MAVEN_OPTS=" $( concat_lines " $MAVEN_PROJECTBASEDIR /.mvn/jvm.config" ) $MAVEN_OPTS "
211290
212291# For Cygwin, switch paths to Windows format before running java
@@ -228,9 +307,10 @@ export MAVEN_CMD_LINE_ARGS
228307
229308WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
230309
231- # avoid using MAVEN_CMD_LINE_ARGS below since that would loose parameter escaping in $@
232310exec " $JAVACMD " \
233311 $MAVEN_OPTS \
312+ $MAVEN_DEBUG_OPTS \
234313 -classpath " $MAVEN_PROJECTBASEDIR /.mvn/wrapper/maven-wrapper.jar" \
235- " -Dmaven.home=${M2_HOME} " " -Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR} " \
314+ " -Dmaven.home=${M2_HOME} " \
315+ " -Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR} " \
236316 ${WRAPPER_LAUNCHER} $MAVEN_CONFIG " $@ "
0 commit comments