こんにちは、まいまいです。
今日はMavenを使っていきたいと思います。理由は"Java Roadmap 2020" にMavenとGradleがあったからですね。jarとかwarファイルの仕組みとかも気になっていたので、練習的にEclipseでMavenを使ってみて、そのままビルド→jarかwarを作成してみようと思います。
EclipseでMavenプロジェクトを作成
早速使っていきます。「ファイル」→「新規」→「その他」か「Mavenプロジェクト」を選択。すると作成画面が出てくるので、「シンプルなプロジェクトの作成」にチェックを入れて「次へ」を押します。
※ここでチェックと入れずに次へを押すと「アーキタイプの選択」という画面に飛ぶのですが、なにがなんやらでしたので今後の課題にします。
続いて色々名前を決める画面に行きます。
・グループIDはすべてのプロジェクトの中でユニークな名称にする
・アーティファクトIDはプロジェクトの名前
を入れるようです。
※じゃあその下の「名前」は何を表すのか?と疑問をお持ちの方、私も入れてみましたがどこに反映されているのか分かりませんでした。空欄でも良いようです。
続いて「パッケージ」。ここはjarかwarを選びましょう。基本的にはjarファイルを使うようです。warはWebアプリケーションを作成した際に指定するようですね。
これらを入れた後に完了を押しておしまいです。自動的にMavenプロジェクトが作成されます。
プロジェクト作成後の設定
プロジェクト作成後の設定です。
Javaバージョンを決める
デフォルトはjre1.5だそうです。。使えないので、最低でも1.8(Java8)に設定していきたいところですね。
「JREシステムライブラリ」→「ビルドパス」→「構成」→「ライブラリ」→「JREシステムライブラリ」をダブルクリックしてバージョンを変更します。私はなんとなく11にしました。
pomを編集する
続いてpomを編集していきます。Project Object Modelの略で、その名の通りプロジェクトの設定をこのファイルで管理していきます。
中を見ると、先ほど作成時に登録したグループIDなどが記述されていると思います。ここからさらに記述を増やしていくのですが、さっき指定した「パッケージ: jar」の指定がありません。デフォルトはjarなので記述しないでも良いのでしょうか。。でも気持ち悪いので追加していきます。
<packaging>jar</packaging>
をprojectタグに挟まれるように追記します。
さらに依存関係を調整していきましょう。Mavenプロジェクトの良いところは、pomに依存関係を記載するだけで、そのjarファイルを手に入れられる点です。
例えばJsonを扱うためにjacksonを使おうと思うと、従来ならjacksonを配布しているサイトに行ってダウンロードし、ビルドパスを通す必要がありました。しかしこれには問題点があります。
- 単純に面倒。
- バージョン管理が大変。
2が特に大変ですよね。バージョンを変更するには再度配布サイトから落としてくる必要がありますし、なんか間違いも多そうです。しかしpomを使うと、pomに記述するだけでMavenセントラルリポジトリというところから自動的にjarファイルを落としてくることができます。依存関係管理の煩雑さが解決されます。
まだあまり詳しく理解していませんが、早速使っていきたいと思います。習うより慣れろといいますが、習いつつ慣れつつが最も大切ですもんね。(頭でっかちもだめだし、何か分からんけど使える、もだめですから両立しましょう。)
Jacksonを入れてみる
まずはsrc/main/javaにMain.javaを作成し、以下を記述します。
public class Main { public static void main(String[] args) { ObjectMapper om = new ObjectMapper(); } }
すると、「ObjectMapperを型に解決できません」みたいなエラーが出ると思います。理由はJacksonが依存関係に無いためですね。そこで早速pomにJacksonの記述を入れていきたいと思います。
Mavenセントラルリポジトリに行き、上の検索欄に"jackson"と入力。"Jackson Databind"が一番上にヒットするので、それを選択します。その後はJacksonの入れたいバージョンを選択します。今回はなんとなく2.11.2にします。開いたページのMavenタグの中に、以下のような記述があると思うのでコピーします。
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.2</version> </dependency>
これをpomに入れていきます。その前に、まだpomには<dependencies>タグがないと思うので、以下のようにします。※Jackson以外にも依存関係を追加していく際は、この<dependencies>タグに挟まれた中に増やしていきます。
<dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.2</version> </dependency> </dependencies>
これで準備は完了です。この後、依存関係をダウンロードしていきます。
Maven更新とインストール、ビルド
プロジェクトを右クリック→Maven→プロジェクトの更新を押した後、同じく右クリック→実行→Maven installをクリック。そうすると先ほど設定したJacksonを自動的に入れてくれます。
コンソールにBuild Successが表示されたら、もう一度Main.javaに戻りましょう。そこでCtrl + Shift + OでJacksonをインポートできます。エラーが消えました!
jarファイルの確認
最後に、Maven installを行うと「target」という謎のフォルダができたと思いますが、これがビルド結果です。中に「〜〜〜.jar」というjarファイルが生成されていると思います。jarファイルについては勉強して、別で書こうかなと思います。
まとめ
EclipseによるMavenの練習をご紹介しました。最も一般的な流れで、pomの使い方も勉強できたので、これからより深い知識(なぜpomが嬉しいのか、セントラルリポジトリとは、など)を勉強していきたいと思います。最後までお読みいただきありがとうございました。