Projekt

Obecné

Profil

Stáhnout (10 KB) Statistiky
| Větev: | Tag: | Revize:
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
#    https://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
# Maven 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 /usr/local/etc/mavenrc ] ; then
40
    . /usr/local/etc/mavenrc
41
  fi
42

    
43
  if [ -f /etc/mavenrc ] ; then
44
    . /etc/mavenrc
45
  fi
46

    
47
  if [ -f "$HOME/.mavenrc" ] ; then
48
    . "$HOME/.mavenrc"
49
  fi
50

    
51
fi
52

    
53
# OS specific support.  $var _must_ be set to either true or false.
54
cygwin=false;
55
darwin=false;
56
mingw=false
57
case "`uname`" in
58
  CYGWIN*) cygwin=true ;;
59
  MINGW*) mingw=true;;
60
  Darwin*) darwin=true
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
    ;;
71
esac
72

    
73
if [ -z "$JAVA_HOME" ] ; then
74
  if [ -r /etc/gentoo-release ] ; then
75
    JAVA_HOME=`java-config --jre-home`
76
  fi
77
fi
78

    
79
if [ -z "$M2_HOME" ] ; then
80
  ## resolve links - $0 may be a link to maven's home
81
  PRG="$0"
82

    
83
  # need this for relative symlinks
84
  while [ -h "$PRG" ] ; do
85
    ls=`ls -ld "$PRG"`
86
    link=`expr "$ls" : '.*-> \(.*\)$'`
87
    if expr "$link" : '/.*' > /dev/null; then
88
      PRG="$link"
89
    else
90
      PRG="`dirname "$PRG"`/$link"
91
    fi
92
  done
93

    
94
  saveddir=`pwd`
95

    
96
  M2_HOME=`dirname "$PRG"`/..
97

    
98
  # make it fully qualified
99
  M2_HOME=`cd "$M2_HOME" && pwd`
100

    
101
  cd "$saveddir"
102
  # echo Using m2 at $M2_HOME
103
fi
104

    
105
# For Cygwin, ensure paths are in UNIX format before anything is touched
106
if $cygwin ; then
107
  [ -n "$M2_HOME" ] &&
108
    M2_HOME=`cygpath --unix "$M2_HOME"`
109
  [ -n "$JAVA_HOME" ] &&
110
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
111
  [ -n "$CLASSPATH" ] &&
112
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
113
fi
114

    
115
# For Mingw, ensure paths are in UNIX format before anything is touched
116
if $mingw ; then
117
  [ -n "$M2_HOME" ] &&
118
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
119
  [ -n "$JAVA_HOME" ] &&
120
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
121
fi
122

    
123
if [ -z "$JAVA_HOME" ]; then
124
  javaExecutable="`which javac`"
125
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
126
    # readlink(1) is not available as standard on Solaris 10.
127
    readLink=`which readlink`
128
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
129
      if $darwin ; then
130
        javaHome="`dirname \"$javaExecutable\"`"
131
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
132
      else
133
        javaExecutable="`readlink -f \"$javaExecutable\"`"
134
      fi
135
      javaHome="`dirname \"$javaExecutable\"`"
136
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
137
      JAVA_HOME="$javaHome"
138
      export JAVA_HOME
139
    fi
140
  fi
141
fi
142

    
143
if [ -z "$JAVACMD" ] ; then
144
  if [ -n "$JAVA_HOME"  ] ; then
145
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
146
      # IBM's JDK on AIX uses strange locations for the executables
147
      JAVACMD="$JAVA_HOME/jre/sh/java"
148
    else
149
      JAVACMD="$JAVA_HOME/bin/java"
150
    fi
151
  else
152
    JAVACMD="`\\unset -f command; \\command -v java`"
153
  fi
154
fi
155

    
156
if [ ! -x "$JAVACMD" ] ; then
157
  echo "Error: JAVA_HOME is not defined correctly." >&2
158
  echo "  We cannot execute $JAVACMD" >&2
159
  exit 1
160
fi
161

    
162
if [ -z "$JAVA_HOME" ] ; then
163
  echo "Warning: JAVA_HOME environment variable is not set."
164
fi
165

    
166
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
167

    
168
# traverses directory structure from process work directory to filesystem root
169
# first directory with .mvn subdirectory is considered project base directory
170
find_maven_basedir() {
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"
180
  while [ "$wdir" != '/' ] ; do
181
    if [ -d "$wdir"/.mvn ] ; then
182
      basedir=$wdir
183
      break
184
    fi
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
190
  done
191
  echo "${basedir}"
192
}
193

    
194
# concatenates all lines of a file
195
concat_lines() {
196
  if [ -f "$1" ]; then
197
    echo "$(tr -s '\n' ' ' < "$1")"
198
  fi
199
}
200

    
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
289
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
290

    
291
# For Cygwin, switch paths to Windows format before running java
292
if $cygwin; then
293
  [ -n "$M2_HOME" ] &&
294
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
295
  [ -n "$JAVA_HOME" ] &&
296
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
297
  [ -n "$CLASSPATH" ] &&
298
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
299
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
300
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
301
fi
302

    
303
# Provide a "standardized" way to retrieve the CLI args that will
304
# work with both Windows and non-Windows executions.
305
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
306
export MAVEN_CMD_LINE_ARGS
307

    
308
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
309

    
310
exec "$JAVACMD" \
311
  $MAVEN_OPTS \
312
  $MAVEN_DEBUG_OPTS \
313
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
314
  "-Dmaven.home=${M2_HOME}" \
315
  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
316
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
(3-3/5)