pre{ white-space: pre; } .entry-content pre{ word-wrap: normal; }
読者です 読者をやめる 読者になる 読者になる

ぶらコード

ぶらりオープンソースの旅

ぶらコード:maven:その4(Plexusその3):入り口に入るの巻

今回は、入り口をめっけたので、次回はこの入り口をぶらつきつつ、その先に進んで行くとします。

前回見つけた入り口に入って行きたいのだが、ソースコードを如何に貼り付けて、ぶらり旅の記録を残していくか試行錯誤中。
とりあえず、gist使ってソースを貼ってみる。

まずは、main()メソッドの5行目で、次のmainWithExitCode()というメソッドに入っていく。
なんでわざわざmainWithExitCode()メソッドに分岐するのかってのは、main()メソッドの構造を明確にしたいからですかね。
mainWithExitCode()でくくり出した、一番やりたいことの外で、例外のハンドリングして、
正常時と異常時にそれぞれ適切な終了コードを、System.exit()を使って処理していますな。

ところで、異常時には「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} "$@"

ようやくmavenとも繋がってきたな。