入社後、最初に渡された仕事が、Javaで書かれたシステムの、実行・開発環境の整備と開発であった。
しかし残念ながら、これまでJavaの開発経験はほとんどない。しかも、サーバーサイドの知識は0。さらに悪いことに、周りにこのシステムに詳しい人もいない。
「新人だから大目に見るので、best effortで」というありがたいお言葉を頂戴しながら、ここ最近はJavaやグループ開発の基礎知識を学習していた。
このシリーズポストでは、私の学習ステップを晒してみる。同じような境遇の人が見てくれたら幸いである。苦労を共有出来たら、ありがたい。「これも学んどいた方がいい」というのがあれば、是非ご教授いただきたい。それは間違っている、というツッコミもありがたい。
Maven
Javaの高機能ビルドツール。Makefileの賢いやつというイメージ。Mavenの最も重要な能力は、依存関係の解決だ。通常、大規模開発をすると、様々なライブラリを駆使して開発を進めることになる。そこで問題となるのが、ビルドに必要なライブラリってどれだっけ、という依存関係の定義らしい。IDEでも依存関係は調べて、解決できない時は赤線を引いてくれる。しかしMavenが凄いのは、ビルド時に足りないライブラリがあれば、ネット(ネット上のリポジトリ)から取ってきてくれるのだ。
Mavenの他の能力は、MavenがJavaプロジェクトのひな形(Mavenプロジェクト)を作ってくれることだ。 ひな形には、ソース、依存するライブラリなどが含まれている。開発者が開発を始める時、あらかじめ世界の誰かが作ったひな形を選んで利用することで、0から開発する必要がなくなる。
自分がこのようなMavenの概要を知る際には、以下の情報を参考にした。他にもMavenは多くの能力を持っているので、それは下の情報を参考にしてもらいたい。
- (Web)Maven2によるビルド入門
- http://www.nulab.co.jp/kousei/chapter4/01.html
- Mavenが持つ基本的な役割を、実際に手を動かして確認することが出来る。
- (Web)TECHSCORE
- Mavenについて、まるで本のように章立てをしてまとめているサイト。4章のEclipseとの連携まで読んだ(全9章)。
- (書籍)Apache Maven 2.0入門 Java・オープンソース・ビルドツール
- Amazonでも、星がほぼ4に近い。(6/4現在、評価者4人だが)
- Mavenが他のビルドツールと違って何が良いのかなど、Mavenを初めて触る人間にとって参考になった。
- 社内にリポジトリを立てる
- デフォルトでは、Mavenはここのリポジトリを見に行って、ライブラリを取ってくる。
- 社外に出したくない独自ライブラリは、自社内でリポジトリを立てる必要がある。(一般に、インハウスリポジトリ(in-house repository)と呼ぶ)
- そのリポジトリに、与えられたシステムのプロジェクトを乗せる
- 手元でMavenプロジェクトを作成し、渡されたシステムが手元のEclipseで見れているかチェック
- (Web)Qiita mavenのインハウスリポジトリを作るよ
- (Web) 備忘録のようなもの maven用社内リポジトリを構築する
ここで問題が。上の二つのサイトでは、社内リポジトリにプロジェクトをデプロイするための設定として、ライブラリ内のpom.xmlを修正せよ、と書かれている。しかし、自分に渡されたプロジェクトには、pom.xmlが含まれていない。つまり、渡されたプロジェクトは、Mavenプロジェクトではなく、Maven用のライブラリなのだ。
解決策としては、「そのまま、リポジトリに乗せる」というだけだった。ディレクトリの構造を崩さず、そのまま乗せれば、手元もPCから、Mavenプロジェクトのひな形として取ってくることが出来た。
ちなみに、結果的に自社で構築した構成はやや特殊である。まずグローバルのリポジトリから、あらかじめ必要なライブラリを全てダウンロードし、それらと渡されたプロジェクトを一緒に、社内リポジトリ(リポジトリ管理ツールNexus)に、ミラーリポジトリとしてデプロイした。手元のPCでは、Maven設定ファイル(settings.xml)でミラーリポジトリを設定し、Mavenプロジェクトを作成した。
まだまだMavenは使いこなせていないし、基礎中の基礎にしか目を通していない。しかし、使いこなせたらJavaの開発スピードが大きく向上するだろう。特にグループ開発では。是非、これからも研鑽を積みたいところだ。
次回は、Gitの学習ログを残す予定。
コメント
コメントを投稿