java - 関係 - Eclipseを既に持っているとMavenやAntが必要なのはなぜですか?




mavenプロジェクト 更新 (4)

  1. あなたの同僚がNetBeansやIDEAを好むかもしれないから
  2. 設定はEclipseのインストールごとに異なる可能性があるため
  3. 依存関係を自動的に取得したい場合があるからです
  4. ビルド、jar、静的コード解析の適用、単体テストの実行、ドキュメントの生成、ディレクトリへのコピー、環境に応じたプロパティのチューニングなど、完全なビルドを自動化したいからです。
  5. 一度それが自動化されれば、すべての変更または毎時でアプリケーションを構築する連続的な統合システムを使用して、すべてがまだ構築され、テストが合格していることを確認することができます。
  6. Mavenは設定に対して慣例を使用するためです。
  7. あなたのIDEは、あなたが必要とする空想的なコード生成/変換をサポートしていないかもしれないからです。
  8. ビルドスクリプトはビルドプロセスを文書化するためです。

Eclipseは開発環境です。 しかし、それはビルドツールではありません。

私は個人的にはMavenだが、YMMVは嫌いだ。 gradle、buildrなど多くの選択肢があります。

私はこの質問がJava用のIDE比較して拡張されたものだと考えています。まだAntが必要ですか?

上記の質問に対する回答がありますが、EclipseだけでMavenやAntを使用する具体的な例を知りたいと思います。

私がEclipseで開発するとき、Eclipseは私のためにすべてを行い、実行ボタンをクリックするだけです。 また、Eclipseは、コードを実行可能なjarまたはWindowsの.exeにエクスポートすることができます。

だから私はなぜMavenかAntが必要なのか分からない。

そして、もし私が必要とするなら、 どちらを選択すべきですか、MavenかAnt?


AntやMavenを使うと多くの利点があります。

Mavenは、Antの更新コンセプトです。 あなたに弾丸の答えを与える代わりに、私はこの質問に答えるために別のアプローチをとることに決めました。 私はあなたに簡単な質問をします。 私はここであなたが開発者になると仮定します。 または何らかのオブジェクト指向プログラミングの背景を持つことができます。

だからあなたのマネージャーが200ディレクトリをコピーするように求めていたがjar, war and earそれらのディレクトリ内のjar, war and earファイルjar, war and earファイルjar, war and earファイルを無視して一度コピーした場合。 これらの200個のディレクトリを別のデスティネーションにデプロイしますが、 .classファイルのみをデプロイします。 残りのファイルを別の宛先などにコピーします。

あなたがjavaでこれを行うために。 それは多くの論理、多くのコードとなり、変更するためには拡張性や適応性がありません。 そのため、AntまたはMavenは、アプリケーションの使用に必要なオーバーヘッドを最小限に抑えて、このすべてを実行して準備します。 antまたはMavenのコードのサイズは、Javaと比較して1/4なります。

リンクをクリックすると、より多くの技術的利点が得られます。

Maven

私は利益がある本物の答えを見つけることができませんでしたが、これがあなたを説得すると確信しています;)


Mavenは、autoconfが最先端のコード自動化をリードしていると思っていて、オブジェクトコードオブジェクト環境を必要とすることを理解していないと考えている過去のCシェルスクリプト子どもたちによって書かれたものどのようにして開発や展開のためにも効率的です。 Antは十分に悪いですが、MavenはAntとIvyのすべての最悪の機能を組み合わせています。 それはオブジェクト環境を作成せず、そうするツールでうまく動かない。

単純に、オブジェクト環境には、すべてのクラスオブジェクト、つまり、システムで使用可能なオブジェクトのタイプを決定するオブジェクトが常時存在し、使用可能である必要があります。 そこから、私が望むものは何でも、クラスの複数のオブジェクトをインスタンス化したり、さまざまなシーケンスやインスタンス化のルールなどを設定することができます。環境は完全に生きているはずなので 、ビルドツールは必要ありません。 私のアプリケーションをデプロイするという点では、アプリケーションが作る名前空間にコードで参照されていないすべてのクラスオブジェクトを投げ捨てるのは難しくありません。 JVMのガベージコレクタは、今日もほぼ同じことをやっています。 その時点で、私のオブジェクトと、オブジェクトが参照するすべてのオブジェクト(主にクラスオブジェクト)、つまり自分のアプリケーションとすべての依存関係からなるデプロイメント環境があります。 これが仮想マシンの仕組みです。 (私たちのVMは、他のLinux VM上のVMWare VM上のLinux VM上のJava VM上でSpring VMを実行する必要があるため、ソフトウェア開発の愚かさのもう一つの例です)。 依存関係が更新されると、古いコードを新しいlibsにマージし、新しいlibsを使用して古いバージョンにマージしたり、両方のバージョンを保存するように、環境を開発者に促すだけで十分です。 プロンプトでは、開発者は、すべてのライブラリの20バージョンを避けるために時には必要なわずかな変更を加えることを奨励します.Mavenのようなツールでは、20バージョンがあり、Javaアプリケーションでは一般的な膨大な実行時間を招いてしまいます。

Java開発空間では、さまざまな方法でパラダイムを壊すプラグインがたくさんあるが、Eclipseは適切なオブジェクト環境に最も近い。 Mavenを使用するために与えられた理由の大部分は、批判的に検討されたときに崩壊します。

NetbeansとIdeaはオブジェクト環境ではなく、テキストエディタが誇張されていますが、何千ものEclipseプラグインで扱われていないものに対してツールを使用したい場合、Eclipseプロジェクトをインポートして維持することができます。とにかく純粋なNetbeansやIdeaプロジェクトであればEclipseは遅いでしょう。

Mavenを使う深刻な理由ではありません。

Eclipseでのエクスポート/インポートの容易さ(各チームがIDEで行う必要がある)は、開発チーム側の怠け者(またはスペースやタブに対する宗教的な議論、lol) 。

もう一度、Mavenを使う深刻な理由ではありません。

チーム環境? GITやSVNのようなリポジトリを使っていないチームを見せてください。 Nexus reposを設定することによって、機能とメンテナンスの両方の問題を再現する必要があるのはなぜですか?

実際にMavenを使用しないことが良い理由です。

サーバービルドを実行していますか? 素晴らしいアイデアは、Nexusにプッシュされるランダムビルドではなく、実際にソースリポジトリにチェックインされたコードから始めるべきではないでしょうか? これは、Git、特にMitとのGitに対するポイントをもたらします。 Gitではローカルでテストしてからコミットします(JenkinsとEclipseのMaven設定の違いにより、ローカルテストでサーバビルドが動作しないことが分かっているためです)。私は変更をコミットする必要があります。サーバのMavenビルドに失敗したことを確認するために別のブランチを作成し、さらに変更をコミットして問題を修正し、リポジトリのソース履歴を読み取ることができなくなります。 チェックインされたコードは最低でもユニットテストに合格していなければなりません.GitとMavenが保証外である場合はユニットテストを行います。

あなたが実際に調べるなら、ヘッドレスビルドをEclipseからエクスポートするのは簡単です。あなたが必要とするのは、antやGradle、Eclipseですでに管理されている開発者ビルド、いくつかのEclipse jarだけです(Eclipseはヘッドレスビルドに必要なすべてのファイルをディレクトリまたはzipファイル、またはそれらをビルドサーバーにftpします)。 Hudson / Jenkinsのようなサーバービルドツールは、ほとんどのソースリポジトリから更新されたコードを引き出し、ビルドスクリプトを呼び出すことができます.Mavenに依存することはありません。 Mavenを使用すると、開発者は誰にも合わないツールを使用することになりますが、エンジニアをビルドすることになります(M2Eを使用してもビルドには時間がかかりますが、その場合には十分です)あなたはM2Eプラグインの過多を使用して2つの統合のすべての面倒を見ても、 まだ本当ですワークステーションの構築のようには動作しません。 いずれにしても、ゆっくりと壊れやすいサーバービルドのために、より遅くて壊れやすいワークステーションを構築することもできます。 すべてのMavenベースのプロジェクトで、作業しましたが可能な限りすべてのM2Eプラグインがインストールされ、正しく構成されていない限り、Eclipseで表示されない一時的なHudson / Jenkinsエラーを見てきました。

Mavenを避けるもう一つの大きな理由のようです。

これはMavenの根本的な問題のいくつか、例えばJava名前空間やXML名前空間を破壊する名前空間などをカバーするものではなく、実際の展開環境では何の関係もないPOM(Build Unit)完成した製品で実際に成し遂げていることは何もないでしょうか?それはすべて、1つのモノリシックなコードとして動作する異なるビルドユニットに懸念と機能性を分けたという誤った意味です。 OSGiや他のコンテナを使用する必要が生じ、Mavenの設定に影響を及ぼし影響を受ける他の設定ファイルを維持しなければならない場合には、悪化する複雑な設定ファイルを手作業で管理するという手間がかかりません。 コードが実行される完全な環境を持たずに単体テストを実行しようとすることによって生じる問題。 Maven固有のプラグインの無数のバージョン(Mavenプラグインが矛盾する依存関係を使用していたMavenビルドでJAR地獄を実際に見てきました.Mavenが解決しようとしていた問題の1つです。

はい、Mavenでオブジェクトコードを作成できます。 Cやアセンブラでも純粋なオブジェクトコードを書くことができます 、なぜあなたが望むのか分かりません。

Mavenを避ける最善の理由は、上に述べたすべての問題(および言及されていない他の多くのもの)にうんざりするときに、一連のプロジェクトを無効にするために必要な驚異的な作業量です。

C開発から継承され、開発サイクルがライト・コード、コンパイル、アセンブル、ビルド、デプロイ、テスト、そして何度も繰り返されるという考え方は、オブジェクト環境では時代遅れです。 ある時点で、私たちは、この考え方を持つすべての人々に、開発の方法、時期を再確認する必要があることを伝える必要があります。 そうすることで、Maven、Git、および時間を無駄にする他の多くのツールの必要性がなくなります。

オブジェクトの開発は、変更されたオブジェクトがライブであるために保存されるときにコードの変更がテストされるライブオブジェクト環境で実行する必要があります。 デプロイメントは、その環境からの開発のみの成果物を削除し、開発中およびテスト中に実行中のアプリケーションが使用するすべてのものを持つランタイムを作成することから成っている必要があります。

私は現在、maven-assemblyプラグインを使用してOSGiアプリケーションのデプロイメントアセンブリを作成することによって引き起こされる問題を扱っています。 このアプリケーションは、環境内の実行中のOSGiコンテナにすべてのコード変更をホット・デプロイするEclipse環境で完全に機能します。 しかし、そのプロセスを達成することが唯一の仕事である非常に優れた構成/ビルドエンジニアを抱えているにもかかわらず、構成はメンブレン組み立てプロセスを通してそのまま生き残ることができません。 私たちがMavenを取り除いて(今はコードの量によっては難しいですが)、BNDTOOLS Eclipseプラグインを使用した場合、EclipseビルドをAntまたはGradleヘッドレスビルドとしてエクスポートできます(BNDを書くOSGi開発者BNDTOOLS Mavenをサポートしていません。正当な理由で、Mavenプラグインは、NetbeansとMavenを使用しているFelix開発者によって開発されていますが、両方のツールが同じように設定されていますとにかく開発者向けのGUIオブジェクトなしで、Eclipseとしての環境を提供します。 その結果、展開のための構成とビルドが同じになります。 これにより、開発者1人当たり1日当たり2〜3時間の時間を節約でき、MavenまたはM2Eの遅いビルドを見ているだけです。設定/ビルドエンジニアを解放して、デプロイメントホスト上でアプリのテストをさらに進めてください。

write / compile / assemble / build / deploy / testの考え方を克服することは、唯一の大きな障害です。 現代のマシンではなく1979年のVT100ターミナルでコーディングしていても、あなたは本当の開発者にならず、あなたのメソッドは35年古いです。

チームの開発者の中には、Eclipseのようなライブオブジェクト環境をM2EやOSGiのライブ環境として十分に理解している人はいませんし、トップデベロッパーでもありません。時代遅れのコマンドライン開発ツールの普及に至りました。 彼らはコンフィギュレーションの問題を解決するためにペアプログラミングをしていて、私は画面を共有していたので、他のチームのメンバーの一人が "コードの変更は、バックグラウンドのOSGiコンテナで自動的にテストされます。 私はリモートサーバ上のログを見ているときなど、必要な時にbashシェルを使うことができます。実際にはかなり効率的に正確に行うので、できるだけ早くその環境から抜け出し、21日に戻ります世紀。


Mavenは一般的に、特定のアプリケーション用のプラグインまたはjarを構築するために使用されます。

アプリケーションを開発したが、そのアプリケーションに必要なJARファイルを手動で追加したくないとします。 このような状況では、MavenやAntは非常に役に立ちます。 コードを書いたら、Run As - > Maven Build(Maven Buildをクリック)を実行すると、必要なすべてのプラグインまたはjarが生成され、アプリケーションライブラリのbuild-pathにインクルードされます。 アプリケーションがこれらのjarファイルを取得する方法に疑問がある可能性があります。各アプリケーションには、POM.xmlという名前のxmlファイルがあります。





ant