練習のためだけにJavaプロジェクトを始めようとしています。Mavenについて読んだことがありますが、実際にいつ使用されるのかわかりません。
実用的なヒントを教えてください。Mavenは大いに役立ちますか?Mavenは私のプロジェクトに対して実際に何をしますか?
それが何をするか
Mavenは「ビルド管理ツール」であり、.java
ファイルをコンパイルする方法、ファイル.class
にパッケージ化する方法.jar
(または.war
ファイルにパッケージ化する方法.ear
)、ツールで(前/後処理)する方法、ツールで処理する方法CLASSPATH
、およびその他すべての種類のタスクを定義するためのものです。プロジェクトをビルドします。これは、C / C++のApacheAnt、Gradle、Makefileに似ていますが、必要なライブラリのダウンロードとインストールなどの他の一般的なタスクを組み込むことで、追加のツールやスクリプトを必要としないように完全に自己完結しようとします。
また、「ビルドポータビリティ」テーマを中心に設計されているため、同じビルドスクリプトで同じコードが1台のコンピュータで動作し、別のコンピュータでは動作しないという問題は発生しません(これは既知の問題であり、WindowsのVMがあります) Delphiアプリケーションの一部を他の場所でコンパイルできなかったため、98台のマシン)。このため、IDEで生成されたAntスクリプトを他のIDEにインポートするのは難しいため、異なるIDEを使用する人々の間でプロジェクトに取り組むための最良の方法でもありますが、現在、すべてのIDEはMaven(IntelliJ、Eclipse、およびNetBeans )を理解してサポートしています。 )。Mavenが気に入らなくても、他のすべての最新のビルドツールの参照ポイントになります。
なぜそれを使うべきなのか
Mavenには、非常に優れた3つのことがあります。
Mavenは(使用しているライブラリを宣言した後)、使用しているすべてのライブラリと、それらが使用しているライブラリを自動的にダウンロードします。これは非常に便利で、多くのライブラリを非常に簡単に処理できます。これにより、 「依存関係地獄」を回避できます。これは、ApacheAntのIvyに似ています。
これは「設定より規約」を使用しているため、デフォルトでは、実行するタスクを定義する必要はありません。AntやMakefileで行う必要があるように、「コンパイル」、「テスト」、「パッケージ」、または「クリーン」ステップを作成する必要はありません。Mavenが期待する場所にファイルを配置するだけで、すぐに機能するはずです。
Mavenには、JAXBを使用してXSDスキーマからJavaクラスを生成することから、 Coberturaを使用してテストカバレッジを測定することまで、多くのルーチンタスクを処理するインストール可能な多くの優れたプラグインもあります。それらをあなたに追加するだけで、pom.xml
あなたがやりたい他のすべてと統合されます。
最初の学習曲線は急ですが、(ほぼ)すべてのプロのJava開発者はMavenを使用しているか、使用したいと思っています。すべてのプロジェクトでMavenを使用する必要がありますが、それに慣れるのに時間がかかり、新しいことを学ぶことは時々痛いので、手動で何かをしたいと思うこともありますが、驚かないでください。ただし、Mavenに本当に慣れると、ビルド管理にほとんど時間がかからないことがわかります。
開始方法
開始するのに最適な場所は「5分でMaven」です。これにより、必要なすべてのファイルとフォルダーのセットアップを使用してコードを記述できるプロジェクトを開始できます(はい、少なくとも最初はクイックスタートアーキタイプを使用することをお勧めします)。
開始したら、ツールの使用目的をよりよく理解する必要があります。そのため、「Better Builds with Maven」は、それがどのように機能するかを理解するための最も完全な場所ですが、「Maven:TheCompleteReference」はより最新のものです。理解のために最初のものを読んでください、しかしそれから参照のために2番目のものを使用してください。
この質問への答えはあなた自身の視点に依存します。Mavenユーザーの大多数は、Mavenを「ビルドツール」と呼ぶことになります。これは、ソースコードからデプロイ可能なアーティファクトをビルドするために使用されるツールです。ビルドエンジニアやプロジェクトマネージャーは、Mavenをより包括的なもの(プロジェクト管理ツール)と呼ぶ場合があります。違いはなんですか?Antなどのビルドツールは、前処理、コンパイル、パッケージ化、テスト、および配布のみに焦点を当てています。Mavenなどのプロジェクト管理ツールは、ビルドツールにある機能のスーパーセットを提供します。Mavenは、ビルド機能を提供するだけでなく、レポートを実行したり、Webサイトを生成したり、作業チームのメンバー間のコミュニケーションを促進したりすることもできます。
Sonatypeのドキュメントを確認し、Mavenの機能を理解するために、利用可能なプラグインを確認することを強くお勧めします。
非常に簡単に言えば、Antよりも高い概念レベルで動作します。Antを使用すると、ビルドするファイルとリソースのセットを指定し、次にそれらを一緒にjarする方法を指定し、(clean / compile / jar)で発生する順序を指定します。Mavenでは、これはすべて暗黙的です。Mavenは特定の場所でファイルを見つけることを期待しており、それを自動的に処理します。したがって、Mavenを使用してプロジェクトを設定する方がはるかに簡単ですが、Mavenのルールに従ってプレイする必要があります。
Maven
ビルドツールです。と一緒に、Ant
またはGradle
をJava
構築するためのツールです。
Javaの初心者の場合は、Maven
学習曲線が急なので、IDEを使用してビルドするだけです。