共计 870 个字符,预计需要花费 3 分钟才能阅读完成。
mvn 命令,用于构建 java 我的项目。这篇文章通过剖析 mvn 脚本,看看 mvn 命令底层做了什么。
在开始看 mvn 命令以前,先查了 github,有 maven 的我的项目, 因而 maven 自身应该是一个 java 我的项目。另外,还有 intellij-community 我的项目,能够晓得这也是一个 java 我的项目。
上面正式开始看 mvn 脚本。
首先进入 maven 我的项目的根目录,进入 bin 目录,能够看到 mvn 脚本。
cd bin
通过 vim 关上 mvn 脚本。
vim mvn
间接到脚本开端,能够看到是启动一个 java 命令。
191 exec “$JAVACMD” \
192 $MAVEN_OPTS \
193 $MAVEN_DEBUG_OPTS \
194 -classpath “${CLASSWORLDS_JAR}” \
195 “-Dclassworlds.conf=${MAVEN_HOME}/bin/m2.conf” \
196 “-Dmaven.home=${MAVEN_HOME}” \
197 “-Dlibrary.jansi.path=${MAVEN_HOME}/lib/jansi-native” \
198 “-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}” \
199 ${CLASSWORLDS_LAUNCHER} “$@”
有几个要害的变量,从脚本后面找进去。能够看出 maven 应用是 plexus-classworlds-*.jar,启动类是 org.codehaus.plexus.classworlds.launcher.Launcher
95 JAVACMD=”$JAVA_HOME/bin/java”
105 CLASSWORLDS_JAR=echo "${MAVEN_HOME}"/boot/plexus-classworlds-*.jar
106 CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
到此,mvn 命令底层做了什么曾经根本分明。