私はCSの最終年度であり、最初の重要なプロジェクトに取り組んでいるので、ビルドツールを学習して使用する時期について考えました。
私は主にMavenについて読み、Antについて聞いたことがあります。学習曲線とその場合に役立つ機能を念頭に置いて、一人で開発するプロジェクトにどのように使うべきかについて、あなたの意見を教えてください。
それらは両方とも主な強みを持っており、両方ともあなたのニーズを満たすのに十分です。これが私自身の小さな比較です。うまくいけば、両方を選択できるようになります。
Maven
2つのうちのより高度なものであり、確かに私が使用した中で最も高度なビルドツールの1つです。しかし、それを構築されたツールと呼ぶことは、Mavenの最も革新的な機能の1つが依存関係の管理に関するものであるため、それを真に説明しているわけではありません。要するに、それは外部ライブラリのすべてのいじくり回しを処理し、あなたのためにそれらをダウンロードし、それらの依存関係も解決されてダウンロードされることを検証します。
Mavenはまた、ソースコード、リソース、テストなどのためにプロジェクトのフォルダーをレイアウトする方法に関する規則に大きく依存しています。これらの変換に従ってください。魔法のように正しく機能します(tm)。彼らよりも賢くしようとすると、理解を超えた苦痛を与えるでしょう。ここで少し誇張しましたが、V3は以前のものよりもはるかに使いやすくなっていますが、頭をかいてしまうこともあります。
それでも、これらの規則により、プロジェクトを非常に迅速に作成でき、pom.xml(ビルドエントリポイント)でいくつかの宣言を行うことで、プロジェクトをビルドし、すべてのテストを実行し、jarファイルをパッケージ化することができます。単一のコマンドラインステートメント(mvn cleanパッケージ)。スクリプトやプログラミングは、慣例に従っているだけではありません。
これらの規則のもう1つの副作用は、すべてのMavenプロジェクトが基本的に同じように作成されるため、新しい人を参加させたり、機能している1つの依存関係を深く掘り下げたりするのが簡単なことです。
魔法はおそらくMavenでの作業の最悪の側面です。あなたがコントロールフリークなら、Mavenはしばしばあなたのバランスを崩します。しかし、それに固執し、魔法を理解することは、全体的に大幅に向上した生産性であなたに豊かに報いるでしょう。
Ant
AntはMavenよりも古く、あまり処理しません。 Antには、ビルドスクリプトに手動でアセンブルする必要のある多くのタスクが事前にパッケージ化されています。スクリプトは、宣言型xmlとスクリプトを組み合わせたものです。 Antスクリプトは実際にはチューリング完全であるため、多くのことを実行できますが、XMLは複雑なスクリプトロジックを作成するための最良の媒体ではありません。
Antはあなたをコントロールし、すでにたくさんの缶詰を提供します。ただし、この制御にはコストがかかるため、基本的な作業を行い、ビルド環境を組み立てる必要があります。
Antはまた、少なくとも当然のことながら、依存関係を処理しません。これは、手動で入力する必要がある別のクラスパスフォルダです。 Ivy などの他のシステムを介してこれを処理する方法があります。
Ant with Ivyは、Mavenのほぼすべての機能を提供しますが、プロセスをより細かく制御できます。
とはいえ、ビルドフレーミングが完了すると、Antは非常に使いやすく、build.xmlファイルを正しく構造化すれば、拡張とスケーリングが非常に簡単になります。ただし、ビルドのフレームを間違えると、2番目のプロジェクトをサポートするためだけにすべてを最初から書き直す必要があります。
両方の長所
Mavenを使用すると、ツールとしてセットアップするのにほぼ同じ量の作業が必要になりますが、はるかに高速になります。
Mavenの本 を読んでください。始めるために必要なものがすべて揃っています。ある時点でさらに制御が必要な場合は、 Maven Antrunプラグイン を確認できます。これにより、すべてのMaven環境と規則にアクセスしながら、任意のAntスクリプトを実行できます。そうは言っても、おそらくあなたはそれを必要としないでしょう。個人的に私はMavenを6年間使用していて、一度だけ使用する必要がありました。
Java用の他のビルドツールがありますが、これら2つ(Antを補完するIvyと共に)ですが、私はそれらを試したことがないので、ここでコメントすることはできません。
MavenとAntは非常に人気のあるビルド/プロジェクト管理ツールですが、永遠に存在することはありません。最近の最先端にある何かを試してみたい場合は、 Gradle をチェックしてください。
Gradleは、両方(AntとMaven)の長所を提供します。
(いくつか言及するだけです...詳細については、チェックしてください 彼らのウェブサイト )
ほとんどの場所でこれら2つのツールのいずれかが使用されているため、AntとMavenについて学習することをお勧めします。これにより、エクスペリエンスビルダーとして使用できます。
私はMavenに行きます。これは、最近Javaで使用される最も人気のあるビルドツールです。考えられるほとんどすべてのJavaフレームワークとライブラリは、それを使用して構築されているようです。つまり、(少なくとも)2つのことを意味します。
また、「設定より規約」のような優れた哲学を使用して、それを使用するすべてのプロジェクトで一貫したプロジェクト構造を促進し(Mavenプロジェクトを見ると、ほとんどのものがどこにあるべきかがすぐにわかります)、ビルド構成が素晴らしくて小さいこともわかります。とメンテナンス可能。
どちらのツールも習得するのは特に難しいことではありません。 Mavenの学習は概念の学習に関するものですが、Antの学習は個々のコマンドの学習に関するものです。
編集:これはMavenの本当に良いドキュメンタリーです: http://www.sonatype.com/books/mvnref-book/reference/