19
19
# ----------------------------------------------------------------------------
20
20
21
21
# ----------------------------------------------------------------------------
22
- # Maven2 Start Up Batch script
22
+ # Apache Maven Wrapper startup batch script, version 3.1.1
23
23
#
24
24
# Required ENV vars:
25
25
# ------------------
26
26
# JAVA_HOME - location of a JDK home dir
27
27
#
28
28
# Optional ENV vars
29
29
# -----------------
30
- # M2_HOME - location of maven2's installed home dir
31
30
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
32
31
# e.g. to debug Maven itself, use
33
32
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
36
35
37
36
if [ -z " $MAVEN_SKIP_RC " ] ; then
38
37
38
+ if [ -f /usr/local/etc/mavenrc ] ; then
39
+ . /usr/local/etc/mavenrc
40
+ fi
41
+
39
42
if [ -f /etc/mavenrc ] ; then
40
43
. /etc/mavenrc
41
44
fi
@@ -54,38 +57,16 @@ case "`uname`" in
54
57
CYGWIN* ) cygwin=true ;;
55
58
MINGW* ) mingw=true;;
56
59
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
+ ;;
89
70
esac
90
71
91
72
if [ -z " $JAVA_HOME " ] ; then
@@ -94,49 +75,18 @@ if [ -z "$JAVA_HOME" ] ; then
94
75
fi
95
76
fi
96
77
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
-
123
78
# For Cygwin, ensure paths are in UNIX format before anything is touched
124
79
if $cygwin ; then
125
- [ -n " $M2_HOME " ] &&
126
- M2_HOME=` cygpath --unix " $M2_HOME " `
127
80
[ -n " $JAVA_HOME " ] &&
128
81
JAVA_HOME=` cygpath --unix " $JAVA_HOME " `
129
82
[ -n " $CLASSPATH " ] &&
130
83
CLASSPATH=` cygpath --path --unix " $CLASSPATH " `
131
84
fi
132
85
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
134
87
if $mingw ; then
135
- [ -n " $M2_HOME " ] &&
136
- M2_HOME=" ` (cd " $M2_HOME " ; pwd)` "
137
88
[ -n " $JAVA_HOME " ] &&
138
89
JAVA_HOME=" ` (cd " $JAVA_HOME " ; pwd)` "
139
- # TODO classpath?
140
90
fi
141
91
142
92
if [ -z " $JAVA_HOME " ]; then
@@ -168,7 +118,7 @@ if [ -z "$JAVACMD" ] ; then
168
118
JAVACMD=" $JAVA_HOME /bin/java"
169
119
fi
170
120
else
171
- JAVACMD=" ` which java` "
121
+ JAVACMD=" ` \\ unset -f command ; \\ command -v java` "
172
122
fi
173
123
fi
174
124
@@ -182,31 +132,29 @@ if [ -z "$JAVA_HOME" ] ; then
182
132
echo " Warning: JAVA_HOME environment variable is not set."
183
133
fi
184
134
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
-
197
135
# traverses directory structure from process work directory to filesystem root
198
136
# first directory with .mvn subdirectory is considered project base directory
199
137
find_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 "
202
146
while [ " $wdir " != ' /' ] ; do
203
147
if [ -d " $wdir " /.mvn ] ; then
204
148
basedir=$wdir
205
149
break
206
150
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
208
156
done
209
- echo " ${ basedir} "
157
+ printf ' %s ' " $( cd " $ basedir" ; pwd ) "
210
158
}
211
159
212
160
# concatenates all lines of a file
@@ -216,10 +164,115 @@ concat_lines() {
216
164
fi
217
165
}
218
166
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
+
220
263
MAVEN_OPTS=" $( concat_lines " $MAVEN_PROJECTBASEDIR /.mvn/jvm.config" ) $MAVEN_OPTS "
221
264
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
223
276
# work with both Windows and non-Windows executions.
224
277
MAVEN_CMD_LINE_ARGS=" $MAVEN_CONFIG $@ "
225
278
export MAVEN_CMD_LINE_ARGS
@@ -228,7 +281,7 @@ WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
228
281
229
282
exec " $JAVACMD " \
230
283
$MAVEN_OPTS \
284
+ $MAVEN_DEBUG_OPTS \
231
285
-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