AntはまだJavaビルドツールに最適ですか? [閉まっている]
-
10-07-2019 - |
質問
わずかな経験から、Antはビルドツールとしてのみ使用しました。より良い他のプロジェクトはありますか?その理由は?
解決
ほとんどの一般的なタスクでは、複雑なbuild.xmlを記述する必要がないため、mavenには非常に優れたデフォルトがあり、設定よりもすべて規約に準拠しているため、antよりも優れています。
ライブラリの大きな中央リポジトリもあり、「最新の安定したコモンを使用する」などのように設定するのは非常に簡単です。 Mavenはその後、最新の安定バージョンをダウンロードします(jarをVCSにチェックインする必要はありません)。また、新しいアップストリーム安定バージョンがリリースされると、それもダウンロードします。もちろん、必要に応じて特定のバージョンにロックするのも簡単です。
また、NetbeansとEclipse(m2eclipseプラグイン)の両方ともよく統合されているため、pom.xmlファイルで宣言した設定(依存関係を含む)はすべてIDEに反映されます。
mavenにはいくつかの欠点もあります:いくつかのプラグインはかなり不十分に文書化されており、両方のIDEとの統合は実際には完璧ではありません。
他のヒント
Antは依然として主要なプレーヤーです。私の経験では、それが支配的です。さらに、Ivyを使用すると、Mavenのいくつかの長所が処理されます。 IMO、Antは他のツールのフレームワークになります。XMLは硬すぎます(以下のリンクを参照)。
Maven 2も主要なプレーヤーです。私はそれが非常に好きで、Maven 1に当てはまる批判にatする人々を知っています(長い道のりを歩んできました)。
Groovyは、Ant上でビルドするため、ビルドスペースでいくつかの素晴らしい機能を提供しています。ガントはGrailsで使用されますが、Gradleに含まれることがあります。これらはJavaでも使用できます。
自分のブログをポン引きする危険があるので、こちらはGantとGradleに関する投稿です。以下は、彼らの将来に関する非常に現在の議論へのリンクです。 p>
エンタープライズでは、antは依然としてプレイヤーです。依存関係は急速に変化しません。依存jarのかなり最新のバージョンに移行し続けるオープンソースプロジェクトとは異なり、ほとんどの企業は依存関係をあまり速く変更しないようにしています。それを考えると、mavenの利点はantと比べてそれほど大きくありません。
もう一度、Mavenの機能の一部が必要な場合、アリの人はivy( http:// antを持っています。 apache.org/ivy/ )の依存関係機能。
antを引き続き使用する場合は、「ANT IN ACTION」第2版を入手して、antを最高の生産性で使用できるようにします。
幸運を祈ります
ガントもあります。 GantはGroovy + Antです。Groovyでタスクを記述でき、任意のAntタスクを呼び出すこともできます。あなたがJavaショップであり、XMLが嫌いなAntスキルを再利用したい場合は、Gantをお勧めします。セットアップが簡単で、antに埋め込むことができます(antからgantを呼び出すこともできます)。
SCons は本当に気に入っています。これは、構成ファイルがすべてPythonスクリプトであるビルドツールです。これは、Pythonまたは同様のスクリプト言語を知っている人なら誰にでもアピールできます。 SConsは、JavaとC / C ++およびその他の言語で動作するように設計されており、過去に非常に満足しています。
SConsファイルはPythonで記述されているため、特別なことをする必要がある場合は、任意のPythonコードを記述できます。ただし、Pythonに完全に慣れていない場合は、Antなどの拡張を試みるよりも学習曲線が高くなる可能性があります。
Maven2は今後の予定です。
しかし、私たちのプロジェクトでは、可能な限りアリに移行しています。
Maven2を使用するには、Maven2が必要な方法を実現するためにかなりの知識が必要です。Maven2のバージョンでは、クラスパスの処理方法が異なります。
依存関係の依存関係に含まれるすべてのライセンスをチェックするのは苦痛です。依存関係が引き込まれる可能性があります。
また、依存関係を自分で把握する必要があるため、起動時間が遅くなる可能性がありますが、少なくとも読みやすくなっています。ここでは魔法はありません:)
Mavenを使用する場合は、Nexusのような内部リポジトリについて考えてください。こうすることで、一部のライブラリがネットから離れることを決めても、ソフトウェアは死にません*。
* maven1で火傷しました。 ibiblio maven1リポジトリはリダイレクトし、maven1はリダイレクトをサポートしません:(
適切なツールを検討する際には、要件から始めることをお勧めします。各プロジェクトは異なります。使用するツールは、ファッションではなく問題空間を反映する必要があります。
そうは言っても、一般的な用途では、おそらくantはおそらくJavaアプリケーションを構築するための最良の汎用ツールだと思います。多くの場合、依存関係管理用の他のツールと一緒に効果的に使用されますが、問題なくソリューションに再び行き当たります。
非常に良いニュースは、プロセスが適切であれば、ビルドツールの切り替えは非常に簡単なプロセスであるということです-レッスン-手元の問題に合わせた適切なプロセスから始めます。