1+ #! /bin/sh
2+ # ----------------------------------------------------------------------------
3+ # Licensed to the Apache Software Foundation (ASF) under one
4+ # or more contributor license agreements. See the NOTICE file
5+ # distributed with this work for additional information
6+ # regarding copyright ownership. The ASF licenses this file
7+ # to you under the Apache License, Version 2.0 (the
8+ # "License"); you may not use this file except in compliance
9+ # with the License. You may obtain a copy of the License at
10+ #
11+ # http://www.apache.org/licenses/LICENSE-2.0
12+ #
13+ # Unless required by applicable law or agreed to in writing,
14+ # software distributed under the License is distributed on an
15+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16+ # KIND, either express or implied. See the License for the
17+ # specific language governing permissions and limitations
18+ # under the License.
19+ # ----------------------------------------------------------------------------
20+
21+ # ----------------------------------------------------------------------------
22+ # Maven2 Start Up Batch script
23+ #
24+ # Required ENV vars:
25+ # ------------------
26+ # JAVA_HOME - location of a JDK home dir
27+ #
28+ # Optional ENV vars
29+ # -----------------
30+ # M2_HOME - location of maven2's installed home dir
31+ # MAVEN_OPTS - parameters passed to the Java VM when running Maven
32+ # e.g. to debug Maven itself, use
33+ # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
34+ # MAVEN_SKIP_RC - flag to disable loading of mavenrc files
35+ # ----------------------------------------------------------------------------
36+
37+ if [ -z " $MAVEN_SKIP_RC " ] ; then
38+
39+ if [ -f /etc/mavenrc ] ; then
40+ . /etc/mavenrc
41+ fi
42+
43+ if [ -f " $HOME /.mavenrc" ] ; then
44+ . " $HOME /.mavenrc"
45+ fi
46+
47+ fi
48+
49+ # OS specific support. $var _must_ be set to either true or false.
50+ cygwin=false;
51+ darwin=false;
52+ mingw=false
53+ case " ` uname` " in
54+ CYGWIN* ) cygwin=true ;;
55+ MINGW* ) mingw=true;;
56+ Darwin* ) darwin=true
57+ # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
58+ # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
59+ if [ -z " $JAVA_HOME " ]; then
60+ if [ -x " /usr/libexec/java_home" ]; then
61+ export JAVA_HOME=" ` /usr/libexec/java_home` "
62+ else
63+ export JAVA_HOME=" /Library/Java/Home"
64+ fi
65+ fi
66+ ;;
67+ esac
68+
69+ if [ -z " $JAVA_HOME " ] ; then
70+ if [ -r /etc/gentoo-release ] ; then
71+ JAVA_HOME=` java-config --jre-home`
72+ fi
73+ fi
74+
75+ if [ -z " $M2_HOME " ] ; then
76+ # # resolve links - $0 may be a link to maven's home
77+ PRG=" $0 "
78+
79+ # need this for relative symlinks
80+ while [ -h " $PRG " ] ; do
81+ ls=` ls -ld " $PRG " `
82+ link=` expr " $ls " : ' .*-> \(.*\)$' `
83+ if expr " $link " : ' /.*' > /dev/null; then
84+ PRG=" $link "
85+ else
86+ PRG=" ` dirname " $PRG " ` /$link "
87+ fi
88+ done
89+
90+ saveddir=` pwd`
91+
92+ M2_HOME=` dirname " $PRG " ` /..
93+
94+ # make it fully qualified
95+ M2_HOME=` cd " $M2_HOME " && pwd`
96+
97+ cd " $saveddir "
98+ # echo Using m2 at $M2_HOME
99+ fi
100+
101+ # For Cygwin, ensure paths are in UNIX format before anything is touched
102+ if $cygwin ; then
103+ [ -n " $M2_HOME " ] &&
104+ M2_HOME=` cygpath --unix " $M2_HOME " `
105+ [ -n " $JAVA_HOME " ] &&
106+ JAVA_HOME=` cygpath --unix " $JAVA_HOME " `
107+ [ -n " $CLASSPATH " ] &&
108+ CLASSPATH=` cygpath --path --unix " $CLASSPATH " `
109+ fi
110+
111+ # For Mingw, ensure paths are in UNIX format before anything is touched
112+ if $mingw ; then
113+ [ -n " $M2_HOME " ] &&
114+ M2_HOME=" ` (cd " $M2_HOME " ; pwd)` "
115+ [ -n " $JAVA_HOME " ] &&
116+ JAVA_HOME=" ` (cd " $JAVA_HOME " ; pwd)` "
117+ fi
118+
119+ if [ -z " $JAVA_HOME " ]; then
120+ javaExecutable=" ` which javac` "
121+ if [ -n " $javaExecutable " ] && ! [ " ` expr \" $javaExecutable \" : ' \([^ ]*\)' ` " = " no" ]; then
122+ # readlink(1) is not available as standard on Solaris 10.
123+ readLink=` which readlink`
124+ if [ ! ` expr " $readLink " : ' \([^ ]*\)' ` = " no" ]; then
125+ if $darwin ; then
126+ javaHome=" ` dirname \" $javaExecutable \" ` "
127+ javaExecutable=" ` cd \" $javaHome \" && pwd -P` /javac"
128+ else
129+ javaExecutable=" ` readlink -f \" $javaExecutable \" ` "
130+ fi
131+ javaHome=" ` dirname \" $javaExecutable \" ` "
132+ javaHome=` expr " $javaHome " : ' \(.*\)/bin' `
133+ JAVA_HOME=" $javaHome "
134+ export JAVA_HOME
135+ fi
136+ fi
137+ fi
138+
139+ if [ -z " $JAVACMD " ] ; then
140+ if [ -n " $JAVA_HOME " ] ; then
141+ if [ -x " $JAVA_HOME /jre/sh/java" ] ; then
142+ # IBM's JDK on AIX uses strange locations for the executables
143+ JAVACMD=" $JAVA_HOME /jre/sh/java"
144+ else
145+ JAVACMD=" $JAVA_HOME /bin/java"
146+ fi
147+ else
148+ JAVACMD=" ` which java` "
149+ fi
150+ fi
151+
152+ if [ ! -x " $JAVACMD " ] ; then
153+ echo " Error: JAVA_HOME is not defined correctly." >&2
154+ echo " We cannot execute $JAVACMD " >&2
155+ exit 1
156+ fi
157+
158+ if [ -z " $JAVA_HOME " ] ; then
159+ echo " Warning: JAVA_HOME environment variable is not set."
160+ fi
161+
162+ CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
163+
164+ # traverses directory structure from process work directory to filesystem root
165+ # first directory with .mvn subdirectory is considered project base directory
166+ find_maven_basedir () {
167+
168+ if [ -z " $1 " ]
169+ then
170+ echo " Path not specified to find_maven_basedir"
171+ return 1
172+ fi
173+
174+ basedir=" $1 "
175+ wdir=" $1 "
176+ while [ " $wdir " != ' /' ] ; do
177+ if [ -d " $wdir " /.mvn ] ; then
178+ basedir=$wdir
179+ break
180+ fi
181+ # workaround for JBEAP-8937 (on Solaris 10/Sparc)
182+ if [ -d " ${wdir} " ]; then
183+ wdir=` cd " $wdir /.." ; pwd`
184+ fi
185+ # end of workaround
186+ done
187+ echo " ${basedir} "
188+ }
189+
190+ # concatenates all lines of a file
191+ concat_lines () {
192+ if [ -f " $1 " ]; then
193+ echo " $( tr -s ' \n' ' ' < " $1 " ) "
194+ fi
195+ }
196+
197+ BASE_DIR=` find_maven_basedir " $( pwd) " `
198+ if [ -z " $BASE_DIR " ]; then
199+ exit 1;
200+ fi
201+
202+ # #########################################################################################
203+ # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
204+ # This allows using the maven wrapper in projects that prohibit checking in binary data.
205+ # #########################################################################################
206+ if [ -r " $BASE_DIR /.mvn/wrapper/maven-wrapper.jar" ]; then
207+ if [ " $MVNW_VERBOSE " = true ]; then
208+ echo " Found .mvn/wrapper/maven-wrapper.jar"
209+ fi
210+ else
211+ if [ " $MVNW_VERBOSE " = true ]; then
212+ echo " Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
213+ fi
214+ jarUrl=" https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
215+ while IFS=" =" read key value; do
216+ case " $key " in (wrapperUrl) jarUrl=" $value " ; break ;;
217+ esac
218+ done < " $BASE_DIR /.mvn/wrapper/maven-wrapper.properties"
219+ if [ " $MVNW_VERBOSE " = true ]; then
220+ echo " Downloading from: $jarUrl "
221+ fi
222+ wrapperJarPath=" $BASE_DIR /.mvn/wrapper/maven-wrapper.jar"
223+
224+ if command -v wget > /dev/null; then
225+ if [ " $MVNW_VERBOSE " = true ]; then
226+ echo " Found wget ... using wget"
227+ fi
228+ wget " $jarUrl " -O " $wrapperJarPath "
229+ elif command -v curl > /dev/null; then
230+ if [ " $MVNW_VERBOSE " = true ]; then
231+ echo " Found curl ... using curl"
232+ fi
233+ curl -o " $wrapperJarPath " " $jarUrl "
234+ else
235+ if [ " $MVNW_VERBOSE " = true ]; then
236+ echo " Falling back to using Java to download"
237+ fi
238+ javaClass=" $BASE_DIR /.mvn/wrapper/MavenWrapperDownloader.java"
239+ if [ -e " $javaClass " ]; then
240+ if [ ! -e " $BASE_DIR /.mvn/wrapper/MavenWrapperDownloader.class" ]; then
241+ if [ " $MVNW_VERBOSE " = true ]; then
242+ echo " - Compiling MavenWrapperDownloader.java ..."
243+ fi
244+ # Compiling the Java class
245+ (" $JAVA_HOME /bin/javac" " $javaClass " )
246+ fi
247+ if [ -e " $BASE_DIR /.mvn/wrapper/MavenWrapperDownloader.class" ]; then
248+ # Running the downloader
249+ if [ " $MVNW_VERBOSE " = true ]; then
250+ echo " - Running MavenWrapperDownloader.java ..."
251+ fi
252+ (" $JAVA_HOME /bin/java" -cp .mvn/wrapper MavenWrapperDownloader " $MAVEN_PROJECTBASEDIR " )
253+ fi
254+ fi
255+ fi
256+ fi
257+ # #########################################################################################
258+ # End of extension
259+ # #########################################################################################
260+
261+ export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:- " $BASE_DIR " }
262+ if [ " $MVNW_VERBOSE " = true ]; then
263+ echo $MAVEN_PROJECTBASEDIR
264+ fi
265+ MAVEN_OPTS=" $( concat_lines " $MAVEN_PROJECTBASEDIR /.mvn/jvm.config" ) $MAVEN_OPTS "
266+
267+ # For Cygwin, switch paths to Windows format before running java
268+ if $cygwin ; then
269+ [ -n " $M2_HOME " ] &&
270+ M2_HOME=` cygpath --path --windows " $M2_HOME " `
271+ [ -n " $JAVA_HOME " ] &&
272+ JAVA_HOME=` cygpath --path --windows " $JAVA_HOME " `
273+ [ -n " $CLASSPATH " ] &&
274+ CLASSPATH=` cygpath --path --windows " $CLASSPATH " `
275+ [ -n " $MAVEN_PROJECTBASEDIR " ] &&
276+ MAVEN_PROJECTBASEDIR=` cygpath --path --windows " $MAVEN_PROJECTBASEDIR " `
277+ fi
278+
279+ WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
280+
281+ exec " $JAVACMD " \
282+ $MAVEN_OPTS \
283+ -classpath " $MAVEN_PROJECTBASEDIR /.mvn/wrapper/maven-wrapper.jar" \
284+ " -Dmaven.home=${M2_HOME} " " -Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR} " \
285+ ${WRAPPER_LAUNCHER} $MAVEN_CONFIG " $@ "
0 commit comments