まずは、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} "$@"

results matching ""

    No results matching ""