web-dev-qa-db-ja.com

ビルドツールの使用を開始する

私はCSの最終年度であり、最初の重要なプロジェクトに取り組んでいるので、ビルドツールを学習して使用する時期について考えました。

私は主にMavenについて読み、Antについて聞いたことがあります。学習曲線とその場合に役立つ機能を念頭に置いて、一人で開発するプロジェクトにどのように使うべきかについて、あなたの意見を教えてください。

1
latusaki

それらは両方とも主な強みを持っており、両方ともあなたのニーズを満たすのに十分です。これが私自身の小さな比較です。うまくいけば、両方を選択できるようになります。

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と共に)ですが、私はそれらを試したことがないので、ここでコメントすることはできません。

9
Newtopian

MavenとAntは非常に人気のあるビルド/プロジェクト管理ツールですが、永遠に存在することはありません。最近の最先端にある何かを試してみたい場合は、 Gradle をチェックしてください。

Gradleは、両方(AntとMaven)の長所を提供します。

  • すぐに使用できる依存関係の管理(AntにはIvyなしではこれがなく、セットアップが少し面倒です)
  • 再構成可能/拡張可能なプロジェクトのライフサイクル。 (Mavenのライフサイクルはありますが、再構成するのは困難です)
  • これ以上のXMLはありません。 (gradleスクリプトを作成するときは、実際の言語(groovy)でプログラミングします)
  • マルチプロジェクトビルド機能(より小さく、より焦点を絞ったモジュールを作成し、それらを接着するのが簡単になります)
  • AntとMavenの両方との統合

(いくつか言及するだけです...詳細については、チェックしてください 彼らのウェブサイト

ほとんどの場所でこれら2つのツールのいずれかが使用されているため、AntとMavenについて学習することをお勧めします。これにより、エクスペリエンスビルダーとして使用できます。

1
c_maker

私はMavenに行きます。これは、最近Javaで使用される最も人気のあるビルドツールです。考えられるほとんどすべてのJavaフレームワークとライブラリは、それを使用して構築されているようです。つまり、(少なくとも)2つのことを意味します。

  • 今後は、Antよりも望ましいスキルになる可能性があります。
  • Mavenに組み込まれている依存関係管理(Antにはない機能)を使用すると、これらすべてのサードパーティライブラリとフレームワークをプロジェクトに簡単に含めることができます。

また、「設定より規約」のような優れた哲学を使用して、それを使用するすべてのプロジェクトで一貫したプロジェクト構造を促進し(Mavenプロジェクトを見ると、ほとんどのものがどこにあるべきかがすぐにわかります)、ビルド構成が素晴らしくて小さいこともわかります。とメンテナンス可能。

どちらのツールも習得するのは特に難しいことではありません。 Mavenの学習は概念の学習に関するものですが、Antの学習は個々のコマンドの学習に関するものです。

編集:これはMavenの本当に良いドキュメンタリーです: http://www.sonatype.com/books/mvnref-book/reference/

0