关于maven:底层到底做了什么-maven的mvn命令

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命令底层做了什么曾经根本分明。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理