当前位置: 首页 > 后端技术 > Java

《底层到底做了什么》---maven的mvn命令

时间:2023-04-01 20:55:15 Java

mvn命令,用于构建java项目。本文分析mvn脚本,看看mvn命令底层做了什么。在开始看mvn命令之前,先查了一下github,有maven项目,所以maven本身应该是一个java项目。另外还有intellij-community项目,可以知道这也是一个java项目。下面开始正式看mvn脚本。首先进入maven项目的根目录,进入bin目录,就可以看到mvn脚本了。cdbin通过vim打开mvn脚本。vimmvn直接走到脚本末尾,可以看到启动了一个java命令。191exec“$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.Launcher95JAVACMD="$JAVA_HOME/bin/java"105CLASSWORLDS_JAR=echo"${MAVEN_HOME}"/boot/plexus-classworlds-*.jar106CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher至此,mvn命令底层的作用基本清楚了。