Javaサーバーサイドの学習ログ 〜Maven編〜



入社後、最初に渡された仕事が、Javaで書かれたシステムの、実行・開発環境の整備と開発であった。

しかし残念ながら、これまでJavaの開発経験はほとんどない。しかも、サーバーサイドの知識は0。さらに悪いことに、周りにこのシステムに詳しい人もいない。

「新人だから大目に見るので、best effortで」というありがたいお言葉を頂戴しながら、ここ最近はJavaやグループ開発の基礎知識を学習していた。

このシリーズポストでは、私の学習ステップを晒してみる。同じような境遇の人が見てくれたら幸いである。苦労を共有出来たら、ありがたい。「これも学んどいた方がいい」というのがあれば、是非ご教授いただきたい。それは間違っている、というツッコミもありがたい。

Maven

Javaの高機能ビルドツール。Makefileの賢いやつというイメージ。

Mavenの最も重要な能力は、依存関係の解決だ。通常、大規模開発をすると、様々なライブラリを駆使して開発を進めることになる。そこで問題となるのが、ビルドに必要なライブラリってどれだっけ、という依存関係の定義らしい。IDEでも依存関係は調べて、解決できない時は赤線を引いてくれる。しかしMavenが凄いのは、ビルド時に足りないライブラリがあれば、ネット(ネット上のリポジトリ)から取ってきてくれるのだ。

Mavenの他の能力は、MavenがJavaプロジェクトのひな形(Mavenプロジェクト)を作ってくれることだ。 ひな形には、ソース、依存するライブラリなどが含まれている。開発者が開発を始める時、あらかじめ世界の誰かが作ったひな形を選んで利用することで、0から開発する必要がなくなる。

自分がこのようなMavenの概要を知る際には、以下の情報を参考にした。他にもMavenは多くの能力を持っているので、それは下の情報を参考にしてもらいたい。
ここで、自分がMavenをどう使うことになったかを説明する。自分に渡されたシステムのプロジェクトは、Mavenプロジェクト用のライブラリであった。つまり、このシステムをIDEで見るためには、次のハードルを乗り越える必要があった。
  1. 社内にリポジトリを立てる
    1. デフォルトでは、Mavenはここのリポジトリを見に行って、ライブラリを取ってくる。
    2. 社外に出したくない独自ライブラリは、自社内でリポジトリを立てる必要がある。(一般に、インハウスリポジトリ(in-house repository)と呼ぶ)
  2. そのリポジトリに、与えられたシステムのプロジェクトを乗せる
  3. 手元でMavenプロジェクトを作成し、渡されたシステムが手元のEclipseで見れているかチェック
 そこでまず、社内リポジトリ作成を行った。その際、以下のサイトを参考にした。

ここで問題が。上の二つのサイトでは、社内リポジトリにプロジェクトをデプロイするための設定として、ライブラリ内のpom.xmlを修正せよ、と書かれている。しかし、自分に渡されたプロジェクトには、pom.xmlが含まれていない。つまり、渡されたプロジェクトは、Mavenプロジェクトではなく、Maven用のライブラリなのだ。

解決策としては、「そのまま、リポジトリに乗せる」というだけだった。ディレクトリの構造を崩さず、そのまま乗せれば、手元もPCから、Mavenプロジェクトのひな形として取ってくることが出来た。

ちなみに、結果的に自社で構築した構成はやや特殊である。まずグローバルのリポジトリから、あらかじめ必要なライブラリを全てダウンロードし、それらと渡されたプロジェクトを一緒に、社内リポジトリ(リポジトリ管理ツールNexus)に、ミラーリポジトリとしてデプロイした。手元のPCでは、Maven設定ファイル(settings.xml)でミラーリポジトリを設定し、Mavenプロジェクトを作成した。

まだまだMavenは使いこなせていないし、基礎中の基礎にしか目を通していない。しかし、使いこなせたらJavaの開発スピードが大きく向上するだろう。特にグループ開発では。是非、これからも研鑽を積みたいところだ。


次回は、Gitの学習ログを残す予定。

コメント