まずは、main()メソッドの5行目で、次のmainWithExitCode()というメソッドに入っていく。
なんでわざわざmainWithExitCode()メソッドに分岐するのかってのは、main()メソッドの構造を明確にしたいからですかね。一番やりたいことをmainWithExitCode()というメソッドでくくり出して、その周りで、例外のハンドリングして、正常時と異常時にそれぞれ適切な終了コードを、System.exit()を使って処理していますな。
public static void main( String[] args )
{
try
{
int exitCode = mainWithExitCode( args );
System.exit( exitCode );
}
catch ( Exception e )
{
e.printStackTrace();
System.exit( 100 );
}
}
ところで、異常時には「100」という値を返してますが、この値が意味するところは、、、特になさそうだな。
で、mainWithExitCode()に入ってみると、冒頭で以下のコードに遭遇。
String classworldsConf = System.getProperty( CLASSWORLDS_CONF );
CLASSWORLDS_CONFというのは同じファイル内で、
protected static final String CLASSWORLDS_CONF = "classworlds.conf";
と定義されている。
こいつは、システムプロパティから読み込みを行っている訳だが、
以前登場した、mvnコマンドの「/usr/local/Cellar/maven/3.3.3/libexec/bin/mvn」というシェルスクリプトの最後に記載のある、
起動時の以下のコードでplexusの起動時に「"-Dclassworlds.conf=${M2_HOME}/bin/m2.conf" \」
として渡しているものを、ここで受け取っていることになる。
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "${M2_HOME}"/boot/plexus-classworlds-*.jar \
"-Dclassworlds.conf=${M2_HOME}/bin/m2.conf" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${CLASSWORLDS_LAUNCHER} "$@"