2009-09-05 4 views

答えて

27
  • 依存性管理:ビルドツールは、依存関係を探す場所に関するヒントを提供するコンポーネントモデルに従ってください。 Eclipse/Netbeansでは、JARに依存する必要があります。このJARが更新されているかどうかは実際にはわかりません。これらのビルドツールを使用すると、依存関係の更新を知ることができます(一般に、ソース管理リポジトリとの統合性が高いため)。推移的な依存関係を再計算し、常に最新のバージョンですべてが構築されるようにします。

  • アクセス制御:Javaは、クラスレベルのアクセス制御とは別に、高度な抽象化がありません。これらのビルドツールを使用すると、あなたが依存したいプロジェクトを正確に指定し、可視性とアクセスを高度なレベルで制御できます。

  • カスタムコントロール:Eclipse/Netbeansビルドは、常にJARファイルをビルドします。カスタム構築メカニズムを使用すると、必要に応じて、追加のメタデータ情報を含む独自のカスタム(社内)アーカイブを構築できます。

  • プラグイン:ビルド中にさまざまなことを行うことができるビルドツールに付属するさまざまなプラグインがあります。テストを実行し、コードカバレッジ、静的解析、レポートの生成を得るようなより多くの非自明な何かにJavadocを生成するなどの基本的なものから、など

  • 交通:一部のビルドシステムはまた、アーカイブの輸送を管理する - 開発からシステムをデプロイメントシステムまたは本稼働システムに移行します。したがって、輸送ルート、スケジュールなどを設定することができます。

CruiseControlまたはHudsonのようないくつかの継続的インテグレーションサーバを見てみましょう。また、features page of Mavenは、あなたが知りたいことについていくつかの洞察を提供します。

+0

申し訳ありませんが、依存関係は何ですか? – cesar

+4

あなたが個人的なプロジェクトをしているなら、おそらく日食の構築で十分でしょう。しかし、組織の一員であり、大規模なシステムの一部である1つのコンポーネントを構築している場合、コンポーネントはシステム内の他のコンポーネントに依存することになります。これらはあなたの依存関係です。 – Anirudh

+1

個人的なプロジェクトでもビルドツールが必要だと言わなければならないと思っています.Maven/ant/SoftsonsやGodの使用を禁じることはできません。 IDEをビルドするだけでは、開発者が作業の仕方に気をつけないという印があります。良い職人は良いツールを使い、ビルドツールもその一つです。 – Chii

1

異なる機能。例えば、Mavenはあなたの依存関係をスキャンし、依存関係をダウンロードしてダウンロードすることができます。中規模のプロジェクトでさえ、非常に多くの依存関係が存在する可能性があります。私はEclipseがそれを行うことができるとは思わない。

+0

EclipseはこれをMavenプラグインで行うことができます。 – topchef

+0

@gigory:だから最後に、まだまだ! – Chii

1

@anonymous、

  • 私は私、あなたのチームのメンバー は、IDEにすべて の時間を利用していることを前提としますなぜ?私は コードをヘッドレスビルドサーバーにビルドしたいかもしれませんが、それは ですか?
  • の継続的な統合を使用していることを私に拒否しますか エンジン?
  • 中央リポジトリから依存関係を取得してもよいですか?どうやってやるの?
  • 私は特定のIDEに結びつけますか?非常に古いラップトップでEclipseを簡単に実行することはできませんが、新しいものを購入します。

おそらく、私はまた、sftp/ftp/Samba共有上のSubversionをアンインストールし、パッチまたはちょうどzipフォルダを使用する必要があります。

+4

ええと...何? – cesar

+0

あなたのコードを使用している、またはそれに触れる唯一の人であれば、それを忘れてください。 –

+4

これらは良い点ですが、私はあなたがこれらの納得のいく質問として語らなかったらこれをアップヴォートする傾向があります –

2

IDEからのビルドの問題は、ビルドに影響を与えるたくさんの設定があることです。ビルドツールを使用すると、すべての設定が多かれ少なかれ読みやすい形で小さなスクリプトや設定ファイルに凝縮されます。理想的なケースでは誰も手作業でほとんどビルドを実行できません。

ビルドツールがなければ、それも、あなたが他のすべての答えの上にすべての設定に

+0

これは良い点です。テストを行うチームとコンテンツのビルドとパッキングが開発チームと異なり、必ずしもIDEがインストールされていない(結果的にIDE設定がない)場合があります。 IDEの外でビルド設定を行うことが重要です。 – Anirudh

12

をリバースエンジニアリングする必要がありますのでさんは、今年言わせで、あなたのコードをコンパイルするために次のことは不可能になる場合があります。 NetBeansやEclipseを使わなくても、私のプロジェクトをビルド可能に保つ主な理由は、自動化されたビルドをセットアップするのがずっと簡単だからです。

何らかの形でEclipseを起動し、リポジトリからソースを更新し、すべてビルドし、結果をメールで送信し、出力をディスクのどこかにコピーするサーバーを設定するのはかなり複雑です最後の50個のビルドが保存されます。

0

Jens Schauderの答えを拡張するために、多くのビルドオプションが.projectファイルになります。 Eclipseの厄介な点の1つは、すべてのプロジェクトファイルに絶対パス名を保存するため、あるマシンから別のマシンにプロジェクトファイルをコピーすることができないためです。

私の最大の理由は、自動ビルドです。

+0

Tosh。 Eclipseは絶対パスを保存するだけで、絶対パスを保存します。クラスパスコンテナ、変数、またはワークスペース相対参照を使用する場合、絶対パスはありません。あなたの悪い習慣のためにツールを責めないでください。 –

0

IDEは、上位抽象レイヤーで動作します。

NetBeans nativlyは、その基礎となるビルドツールとしてAntを使用しています。最近、NetBeansで直接mavenプロジェクトを開くことができます。したがって、典型的なNetBeansプロジェクトはantでコンパイルでき、あなたのmavenプロジェクトはすでにNetBeansプロジェクトです。

すべてのGUI対CLIの議論と同様に、IDEは初心者の方が簡単に見えますが、一度考えれば複雑なことをするのは面倒です。

IDEを使用して設定を変更するということは、基本的なものは簡単ですが、複雑なものは適切な場所をクリックする必要があります。さらに、IDEは情報を隠すように見えます。ライブラリを追加するボタンをクリックするのは簡単ですが、ライブラリがどこにあるかまだ分かりません。

対照的に、CLIを使用するのは簡単ではありませんが、すぐに簡単になります。複雑なものをより簡単に行うことができます。

AntまたはMavenを使用することは、すべての人が自分のIDEを選択してコードを処理できることを意味します。コンパイルするためにIDE Xをインストールするように人に指示するのは、 "<シェルでビルドコマンド>を実行する"というよりはるかにオーバーヘッドです。もちろん、あなたは外部のツールに前者を説明することはできません。

要約すると、IDEはビルドツール自体を使用します。 NetBeans Ant(またはMaven)の場合は、そのメリットとデメリットをすべて得ることができます。 Eclipseは独自のものを使っています(私が知る限り)。しかし、Antスクリプトを統合することもできます。

ビルドツール自体については、MavenはAntとは大きく異なります。プロジェクトを実行するWebサーバーをダウンロードする時点まで、指定された依存関係をダウンロードできます。

1

ビルドツールを使用すると、人間の発明なしでビルドを自動的に行うことができます。これは、コードベースで多くのアプリケーションを構築できる場合に不可欠です。

コードベースが変更された後も、アプリケーションのそれぞれおよびすべてが正しく構築できることを確認したいと考えています。それを確認する最善の方法は、コンピュータに自動的にContinouos統合ツールを使用させることです。コードをチェックインするだけで、CIサーバーは変更を受け取り、その変更の影響を受けたすべてのモジュールを再構築します。何かが壊れた場合、責任者は直接郵送されます。

物事を自動化することは非常に便利です。

3

単一の開発者または非常に小さなグループの場合は、ビルドシステムが単なるオーバーヘッドにすぎないように見えます。開発者の数が増えるにつれて、すべての変更を追跡して開発者が同期していることを確実に確認することが急速に困難になります。ビルドシステムは、チームが成長するにつれて、これらのオーバーヘッドの増加率を低減します。 100人以上の開発者がプロ​​ジェクトに取り組むと、Eclipseのすべてのコードをビルドするという問題を考えてみましょう。

個別のビルドシステムを使用する理由の1つは、お客様に提供された内容が、のSCMにチェックインされたコードの特定のバージョンからコンパイルされることを保証することです。これにより、「ワークボックスボックス」の問題を一掃することができます。この利点は、サポート時間を短縮して自分の努力をする価値があると思います。隔離されたビルド(例:CI server)は、開発における問題点も強調します。部分的または急激な変更がコミットされているため、早期に問題を把握する機会があります。

IDEでのビルドは、何が起きたとしても、スタンドアロンビルドシステムはSCMから直接再現可能なビルドを生成します。もちろんこれはIDE内で行うことができますが、AFAIKはAntやMavenのようなものを呼び出してすべてのビルドステップを処理するだけです。

もちろん、ビルドシステムのdirect benefitsもあります。モジュラービルドシステムはコピーペーストの問題を減らし、依存関係の解決やビルドに関連するその他の問題を処理します。このであるため、開発者はコードの提供に専念できます。もちろん、すべての新しいツールが独自の問題を導入しており、習得することにより、ビルドシステムが不必要なオーバーヘッドになっているように見えることがあります(ちょっと考えてみるとGoogle I hate Maven)。

+0

あなたはmavenをお勧めしますか? – cesar

+0

チャーチルから借りる。 Mavenは、試行された他のすべてのツールを除いて最悪のビルドツールであると言われています。 –

0

すべてのプロジェクトでは、開発者が手動でビルドプロセスを呼び出すことがよくありますが、大規模プロジェクトには適していません。ビルドする必要があるもの、実行順序、依存関係を追跡することは非常に困難です。ビルディングプロセス。私たちは、プロジェクトのビルドツールを使用しています。
ビルドツール開発者が日々の生活の中で行う、アプリケーション内のさまざまなタスクを完了しました。
これらは、
です。1.ダウンロードの依存関係。
2.ソースコードをバイナリコードにコンパイルする。
3.バイナリコードのパッケージ化。
4.ランニングテスト。
5.本番システムへの配備。

関連する問題