19
19
# ----------------------------------------------------------------------------
20
20
21
21
# ----------------------------------------------------------------------------
22
- # Apache Maven Wrapper startup batch script, version 3.2.0
22
+ # Maven Start Up Batch script
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
30
31
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
31
32
# e.g. to debug Maven itself, use
32
33
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
35
36
36
37
if [ -z " $MAVEN_SKIP_RC " ] ; then
37
38
38
- if [ -f /usr/local/etc/mavenrc ] ; then
39
- . /usr/local/etc/mavenrc
40
- fi
41
-
42
39
if [ -f /etc/mavenrc ] ; then
43
40
. /etc/mavenrc
44
41
fi
53
50
cygwin=false;
54
51
darwin=false;
55
52
mingw=false
56
- case " $( uname) " in
53
+ case " ` uname` " in
57
54
CYGWIN* ) cygwin=true ;;
58
55
MINGW* ) mingw=true;;
59
56
Darwin* ) darwin=true
60
57
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
61
58
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
62
59
if [ -z " $JAVA_HOME " ]; then
63
60
if [ -x " /usr/libexec/java_home" ]; then
64
- JAVA_HOME=" $( /usr/libexec/java_home) " ; export JAVA_HOME
61
+ export JAVA_HOME=" ` /usr/libexec/java_home` "
65
62
else
66
- JAVA_HOME=" /Library/Java/Home" ; export JAVA_HOME
63
+ export JAVA_HOME=" /Library/Java/Home"
67
64
fi
68
65
fi
69
66
;;
70
67
esac
71
68
72
69
if [ -z " $JAVA_HOME " ] ; then
73
70
if [ -r /etc/gentoo-release ] ; then
74
- JAVA_HOME=$( java-config --jre-home)
71
+ JAVA_HOME=` java-config --jre-home`
75
72
fi
76
73
fi
77
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
+
78
101
# For Cygwin, ensure paths are in UNIX format before anything is touched
79
102
if $cygwin ; then
103
+ [ -n " $M2_HOME " ] &&
104
+ M2_HOME=` cygpath --unix " $M2_HOME " `
80
105
[ -n " $JAVA_HOME " ] &&
81
- JAVA_HOME=$( cygpath --unix " $JAVA_HOME " )
106
+ JAVA_HOME=` cygpath --unix " $JAVA_HOME " `
82
107
[ -n " $CLASSPATH " ] &&
83
- CLASSPATH=$( cygpath --path --unix " $CLASSPATH " )
108
+ CLASSPATH=` cygpath --path --unix " $CLASSPATH " `
84
109
fi
85
110
86
111
# For Mingw, ensure paths are in UNIX format before anything is touched
87
112
if $mingw ; then
88
- [ -n " $JAVA_HOME " ] && [ -d " $JAVA_HOME " ] &&
89
- JAVA_HOME=" $( cd " $JAVA_HOME " || (echo " cannot cd into $JAVA_HOME ." ; exit 1); pwd) "
113
+ [ -n " $M2_HOME " ] &&
114
+ M2_HOME=" ` (cd " $M2_HOME " ; pwd)` "
115
+ [ -n " $JAVA_HOME " ] &&
116
+ JAVA_HOME=" ` (cd " $JAVA_HOME " ; pwd)` "
90
117
fi
91
118
92
119
if [ -z " $JAVA_HOME " ]; then
93
- javaExecutable=" $( which javac) "
94
- if [ -n " $javaExecutable " ] && ! [ " $( expr " \" $javaExecutable \" " : ' \([^ ]*\)' ) " = " no" ]; then
120
+ javaExecutable=" ` which javac` "
121
+ if [ -n " $javaExecutable " ] && ! [ " ` expr \" $javaExecutable \" : ' \([^ ]*\)' ` " = " no" ]; then
95
122
# readlink(1) is not available as standard on Solaris 10.
96
- readLink=$( which readlink)
97
- if [ ! " $( expr " $readLink " : ' \([^ ]*\)' ) " = " no" ]; then
123
+ readLink=` which readlink`
124
+ if [ ! ` expr " $readLink " : ' \([^ ]*\)' ` = " no" ]; then
98
125
if $darwin ; then
99
- javaHome=" $( dirname " \" $javaExecutable \" " ) "
100
- javaExecutable=" $( cd " \" $javaHome \" " && pwd -P) /javac"
126
+ javaHome=" ` dirname \" $javaExecutable \" ` "
127
+ javaExecutable=" ` cd \" $javaHome \" && pwd -P` /javac"
101
128
else
102
- javaExecutable=" $( readlink -f " \" $javaExecutable \" " ) "
129
+ javaExecutable=" ` readlink -f \" $javaExecutable \" ` "
103
130
fi
104
- javaHome=" $( dirname " \" $javaExecutable \" " ) "
105
- javaHome=$( expr " $javaHome " : ' \(.*\)/bin' )
131
+ javaHome=" ` dirname \" $javaExecutable \" ` "
132
+ javaHome=` expr " $javaHome " : ' \(.*\)/bin' `
106
133
JAVA_HOME=" $javaHome "
107
134
export JAVA_HOME
108
135
fi
@@ -118,7 +145,7 @@ if [ -z "$JAVACMD" ] ; then
118
145
JAVACMD=" $JAVA_HOME /bin/java"
119
146
fi
120
147
else
121
- JAVACMD=" $( \u nset -f command 2> /dev/null ; \c ommand -v java) "
148
+ JAVACMD=" ` which java` "
122
149
fi
123
150
fi
124
151
@@ -132,9 +159,12 @@ if [ -z "$JAVA_HOME" ] ; then
132
159
echo " Warning: JAVA_HOME environment variable is not set."
133
160
fi
134
161
162
+ CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
163
+
135
164
# traverses directory structure from process work directory to filesystem root
136
165
# first directory with .mvn subdirectory is considered project base directory
137
166
find_maven_basedir () {
167
+
138
168
if [ -z " $1 " ]
139
169
then
140
170
echo " Path not specified to find_maven_basedir"
@@ -150,99 +180,96 @@ find_maven_basedir() {
150
180
fi
151
181
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
152
182
if [ -d " ${wdir} " ]; then
153
- wdir=$( cd " $wdir /.." || exit 1 ; pwd)
183
+ wdir=` cd " $wdir /.." ; pwd`
154
184
fi
155
185
# end of workaround
156
186
done
157
- printf ' %s ' " $( cd " $ basedir" || exit 1 ; pwd ) "
187
+ echo " ${ basedir} "
158
188
}
159
189
160
190
# concatenates all lines of a file
161
191
concat_lines () {
162
192
if [ -f " $1 " ]; then
163
- # Remove \r in case we run on Windows within Git Bash
164
- # and check out the repository with auto CRLF management
165
- # enabled. Otherwise, we may read lines that are delimited with
166
- # \r\n and produce $'-Xarg\r' rather than -Xarg due to word
167
- # splitting rules.
168
- tr -s ' \r\n' ' ' < " $1 "
169
- fi
170
- }
171
-
172
- log () {
173
- if [ " $MVNW_VERBOSE " = true ]; then
174
- printf ' %s\n' " $1 "
193
+ echo " $( tr -s ' \n' ' ' < " $1 " ) "
175
194
fi
176
195
}
177
196
178
- BASE_DIR=$( find_maven_basedir " $( dirname " $0 " ) " )
197
+ BASE_DIR=` find_maven_basedir " $( pwd ) " `
179
198
if [ -z " $BASE_DIR " ]; then
180
199
exit 1;
181
200
fi
182
201
183
- MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:- " $BASE_DIR " } ; export MAVEN_PROJECTBASEDIR
184
- log " $MAVEN_PROJECTBASEDIR "
185
-
186
202
# #########################################################################################
187
203
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
188
204
# This allows using the maven wrapper in projects that prohibit checking in binary data.
189
205
# #########################################################################################
190
- wrapperJarPath=" $MAVEN_PROJECTBASEDIR /.mvn/wrapper/maven-wrapper.jar"
191
- if [ -r " $wrapperJarPath " ]; then
192
- log " Found $wrapperJarPath "
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
193
210
else
194
- log " Couldn't find $wrapperJarPath , downloading it ..."
195
-
211
+ if [ " $MVNW_VERBOSE " = true ]; then
212
+ echo " Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
213
+ fi
196
214
if [ -n " $MVNW_REPOURL " ]; then
197
- wrapperUrl =" $MVNW_REPOURL /org/apache /maven/wrapper/maven -wrapper/3.2.0 /maven-wrapper-3.2.0 .jar"
215
+ jarUrl =" $MVNW_REPOURL /io/takari /maven-wrapper/0.5.6 /maven-wrapper-0.5.6 .jar"
198
216
else
199
- wrapperUrl =" https://repo.maven.apache.org/maven2/org/apache /maven/wrapper/maven -wrapper/3.2.0 /maven-wrapper-3.2.0 .jar"
217
+ jarUrl =" https://repo.maven.apache.org/maven2/io/takari /maven-wrapper/0.5.6 /maven-wrapper-0.5.6 .jar"
200
218
fi
201
- while IFS=" =" read -r key value; do
202
- # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
203
- safeValue=$( echo " $value " | tr -d ' \r' )
204
- case " $key " in (wrapperUrl) wrapperUrl=" $safeValue " ; break ;;
219
+ while IFS=" =" read key value; do
220
+ case " $key " in (wrapperUrl) jarUrl=" $value " ; break ;;
205
221
esac
206
- done < " $MAVEN_PROJECTBASEDIR /.mvn/wrapper/maven-wrapper.properties"
207
- log " Downloading from: $wrapperUrl "
208
-
222
+ done < " $BASE_DIR /.mvn/wrapper/maven-wrapper.properties"
223
+ if [ " $MVNW_VERBOSE " = true ]; then
224
+ echo " Downloading from: $jarUrl "
225
+ fi
226
+ wrapperJarPath=" $BASE_DIR /.mvn/wrapper/maven-wrapper.jar"
209
227
if $cygwin ; then
210
- wrapperJarPath=$( cygpath --path --windows " $wrapperJarPath " )
228
+ wrapperJarPath=` cygpath --path --windows " $wrapperJarPath " `
211
229
fi
212
230
213
231
if command -v wget > /dev/null; then
214
- log " Found wget ... using wget"
215
- [ " $MVNW_VERBOSE " = true ] && QUIET=" " || QUIET=" --quiet"
232
+ if [ " $MVNW_VERBOSE " = true ]; then
233
+ echo " Found wget ... using wget"
234
+ fi
216
235
if [ -z " $MVNW_USERNAME " ] || [ -z " $MVNW_PASSWORD " ]; then
217
- wget $QUIET " $wrapperUrl " -O " $wrapperJarPath " || rm -f " $wrapperJarPath "
236
+ wget " $jarUrl " -O " $wrapperJarPath "
218
237
else
219
- wget $QUIET --http-user=" $MVNW_USERNAME " --http-password=" $MVNW_PASSWORD " " $wrapperUrl " -O " $wrapperJarPath " || rm -f " $wrapperJarPath "
238
+ wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD " $jarUrl " -O " $wrapperJarPath "
220
239
fi
221
240
elif command -v curl > /dev/null; then
222
- log " Found curl ... using curl"
223
- [ " $MVNW_VERBOSE " = true ] && QUIET=" " || QUIET=" --silent"
241
+ if [ " $MVNW_VERBOSE " = true ]; then
242
+ echo " Found curl ... using curl"
243
+ fi
224
244
if [ -z " $MVNW_USERNAME " ] || [ -z " $MVNW_PASSWORD " ]; then
225
- curl $QUIET -o " $wrapperJarPath " " $wrapperUrl " -f -L || rm -f " $wrapperJarPath "
245
+ curl -o " $wrapperJarPath " " $jarUrl " -f
226
246
else
227
- curl $QUIET --user " $MVNW_USERNAME :$MVNW_PASSWORD " -o " $wrapperJarPath " " $wrapperUrl " -f -L || rm -f " $wrapperJarPath "
247
+ curl --user $MVNW_USERNAME :$MVNW_PASSWORD -o " $wrapperJarPath " " $jarUrl " -f
228
248
fi
249
+
229
250
else
230
- log " Falling back to using Java to download"
231
- javaSource=" $MAVEN_PROJECTBASEDIR /.mvn/wrapper/MavenWrapperDownloader.java"
232
- javaClass=" $MAVEN_PROJECTBASEDIR /.mvn/wrapper/MavenWrapperDownloader.class"
251
+ if [ " $MVNW_VERBOSE " = true ]; then
252
+ echo " Falling back to using Java to download"
253
+ fi
254
+ javaClass=" $BASE_DIR /.mvn/wrapper/MavenWrapperDownloader.java"
233
255
# For Cygwin, switch paths to Windows format before running javac
234
256
if $cygwin ; then
235
- javaSource=$( cygpath --path --windows " $javaSource " )
236
- javaClass=$( cygpath --path --windows " $javaClass " )
257
+ javaClass=` cygpath --path --windows " $javaClass " `
237
258
fi
238
- if [ -e " $javaSource " ]; then
239
- if [ ! -e " $javaClass " ]; then
240
- log " - Compiling MavenWrapperDownloader.java ..."
241
- (" $JAVA_HOME /bin/javac" " $javaSource " )
259
+ if [ -e " $javaClass " ]; then
260
+ if [ ! -e " $BASE_DIR /.mvn/wrapper/MavenWrapperDownloader.class" ]; then
261
+ if [ " $MVNW_VERBOSE " = true ]; then
262
+ echo " - Compiling MavenWrapperDownloader.java ..."
263
+ fi
264
+ # Compiling the Java class
265
+ (" $JAVA_HOME /bin/javac" " $javaClass " )
242
266
fi
243
- if [ -e " $javaClass " ]; then
244
- log " - Running MavenWrapperDownloader.java ..."
245
- (" $JAVA_HOME /bin/java" -cp .mvn/wrapper MavenWrapperDownloader " $wrapperUrl " " $wrapperJarPath " ) || rm -f " $wrapperJarPath "
267
+ if [ -e " $BASE_DIR /.mvn/wrapper/MavenWrapperDownloader.class" ]; then
268
+ # Running the downloader
269
+ if [ " $MVNW_VERBOSE " = true ]; then
270
+ echo " - Running MavenWrapperDownloader.java ..."
271
+ fi
272
+ (" $JAVA_HOME /bin/java" -cp .mvn/wrapper MavenWrapperDownloader " $MAVEN_PROJECTBASEDIR " )
246
273
fi
247
274
fi
248
275
fi
251
278
# End of extension
252
279
# #########################################################################################
253
280
254
- # If specified, validate the SHA-256 sum of the Maven wrapper jar file
255
- wrapperSha256Sum=" "
256
- while IFS=" =" read -r key value; do
257
- case " $key " in (wrapperSha256Sum) wrapperSha256Sum=$value ; break ;;
258
- esac
259
- done < " $MAVEN_PROJECTBASEDIR /.mvn/wrapper/maven-wrapper.properties"
260
- if [ -n " $wrapperSha256Sum " ]; then
261
- wrapperSha256Result=false
262
- if command -v sha256sum > /dev/null; then
263
- if echo " $wrapperSha256Sum $wrapperJarPath " | sha256sum -c > /dev/null 2>&1 ; then
264
- wrapperSha256Result=true
265
- fi
266
- elif command -v shasum > /dev/null; then
267
- if echo " $wrapperSha256Sum $wrapperJarPath " | shasum -a 256 -c > /dev/null 2>&1 ; then
268
- wrapperSha256Result=true
269
- fi
270
- else
271
- echo " Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."
272
- echo " Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."
273
- exit 1
274
- fi
275
- if [ $wrapperSha256Result = false ]; then
276
- echo " Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
277
- echo " Investigate or delete $wrapperJarPath to attempt a clean download." >&2
278
- echo " If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
279
- exit 1
280
- fi
281
+ export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:- " $BASE_DIR " }
282
+ if [ " $MVNW_VERBOSE " = true ]; then
283
+ echo $MAVEN_PROJECTBASEDIR
281
284
fi
282
-
283
285
MAVEN_OPTS=" $( concat_lines " $MAVEN_PROJECTBASEDIR /.mvn/jvm.config" ) $MAVEN_OPTS "
284
286
285
287
# For Cygwin, switch paths to Windows format before running java
286
288
if $cygwin ; then
289
+ [ -n " $M2_HOME " ] &&
290
+ M2_HOME=` cygpath --path --windows " $M2_HOME " `
287
291
[ -n " $JAVA_HOME " ] &&
288
- JAVA_HOME=$( cygpath --path --windows " $JAVA_HOME " )
292
+ JAVA_HOME=` cygpath --path --windows " $JAVA_HOME " `
289
293
[ -n " $CLASSPATH " ] &&
290
- CLASSPATH=$( cygpath --path --windows " $CLASSPATH " )
294
+ CLASSPATH=` cygpath --path --windows " $CLASSPATH " `
291
295
[ -n " $MAVEN_PROJECTBASEDIR " ] &&
292
- MAVEN_PROJECTBASEDIR=$( cygpath --path --windows " $MAVEN_PROJECTBASEDIR " )
296
+ MAVEN_PROJECTBASEDIR=` cygpath --path --windows " $MAVEN_PROJECTBASEDIR " `
293
297
fi
294
298
295
299
# Provide a "standardized" way to retrieve the CLI args that will
296
300
# work with both Windows and non-Windows executions.
297
- MAVEN_CMD_LINE_ARGS=" $MAVEN_CONFIG $* "
301
+ MAVEN_CMD_LINE_ARGS=" $MAVEN_CONFIG $@ "
298
302
export MAVEN_CMD_LINE_ARGS
299
303
300
304
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
301
305
302
- # shellcheck disable=SC2086 # safe args
303
306
exec " $JAVACMD " \
304
307
$MAVEN_OPTS \
305
- $MAVEN_DEBUG_OPTS \
306
308
-classpath " $MAVEN_PROJECTBASEDIR /.mvn/wrapper/maven-wrapper.jar" \
307
- " -Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR} " \
309
+ " -Dmaven.home= ${M2_HOME} " " -Dmaven. multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR} " \
308
310
${WRAPPER_LAUNCHER} $MAVEN_CONFIG " $@ "
0 commit comments