AntはJavaビルドの「メインストリーム」のままですか?


14

開発者IDEでコンパイルされたクラスを単純化するバッチコマンドファイル(windows .bat)を、より包括的なAntビルド(つまり、CVSから取得、コンパイル、jar、アーカイブ、電子メールなど)でゆっくりと置き換えています。

Antで多くの時間を学習(および問題のデバッグ)に費やしてきたので、これらのタスクに使用するのが最も快適です。しかし、Antは、私が最初に学習を始めたときと同じように広く使用されているのか、それとも「世界は新しいものに(そしておそらくよりスマートに)変わったのか」と疑問に思います。(たとえば、Mavenビルドマテリアルが配布されるようになりましたが、これは使用したことがありません。)

この質問の実際の重要な点は、新しい開発者にAntを学ぶように勧めるかどうか、またはビルドのために他の何かを学ぶべきかどうかです。

私は決してトレンドを熟知しているわけではないので、他のJava開発者から彼らが最高のビルドツールだと思うこと、そして新しい開発者が学ばなければならないと思うことを聞くのは素晴らしいことです。


以下のすべての答えを読んでください、そしてそれらはすべて素晴らしかったです!MavenがAntに対して提供する改善点についての洞察に感謝します。Mavenを調査します。
サムゴールドバーグ

antに大量のスクリプトを作成する必要がないほど単純なプロジェクトはごくわずかです。Mavenはこれらの多くを標準的な方法で処理します。

Antは基本的にXMLのシェルスクリプトです(シェルコマンドの代わりにAntコマンドを使用します)。
user253751

Antは非常に時間の無駄です。Mavenがひどいときでも、賢い選択でした。AntにはIDEに統合する方法がなく、Javaプロジェクトは膨大な量のファイルです。時間の30%をファイルからファイルにジャンプするだけで済みます。
ブライアンハント

@bryanhunt:すべての新しいプロジェクトにMavenを使用することになりました。ただし、MavenがJavaアプリ用の展開パッケージを作成する良い方法を見つけていません。(依存関係のコピー、jarのアップロードには問題ありません。)私が読んだ記事のほとんどは、Antプラグインを使用するなどの方法を示しています。だから、Mavenからの最終出力をグルーミングするためにAntを使用していることがわかります。そして、Maven Assemblyプラグインを使用するよりもAntで行う方が簡単だと思われます。
サムゴールドバーグ

回答:


23

私がここで見た中で最も重要なプロジェクトをMavenが引き継いでいるように見えるという点で、他の人たちに同意します。

Antは非常に柔軟性がありますが、ビルドファイルは標準化されていないため、新しいプロジェクトまたは会社に移動すると、ターゲットの名前が異なり、ファイルの構造が異なり、ターゲット間の依存関係が確立される場合とされない場合があります。

Mavenを使用すると、SCMシステムでバイナリの依存関係(jarについて話している)を持ち歩く必要がないという利点も得られます。他の多くの優れたJavaツールは、Maven POMファイルの読み取り方法(標準化のメリット)を知っているため、IDEなどのツールはMavenプロジェクトを非常に迅速にセットアップでき、JenkinsなどのビルドツールはMavenビルドを簡単に実行できます。


13
また、Mavenを使用すると、プロジェクトがIDEに依存しないことになります。IDE戦争があったお店に行ったことがあるなら、この宗教的な戦いをなくすことができます。
RonU

11

私は、AntとMavenで作業してきました。私の経験では、MavenはAntよりも非常に強力です。

  • 過去2、3年目に見たすべてのプロジェクトは、mavenを使用しているようです。約3年前、当時使用されていたMavenバージョン(2.0.something)は非常に信頼性が低く、バグがあるように思えたので、これは私を不思議に思いました。ある時点で(覚えていない2.1または2.2)、mavenは信頼できるようになり、しばらくして過ごした後、私の考えを反対に変えました。さて、mavenよりもantを好む人がいるのを見て驚いたいです。

Mavenについてはあまり肯定的ではありませんが、これまでのドキュメントの経験はそれほど素晴らしいものではありませんでした。私はmavenのドキュメントよりも悪いドキュメントがある製品を見たことがあると思いますが、どれを覚えているのか覚えていません(いくつかの古代のCSVライブラリiirc)。


2
Dunno、私はMaven Referenceがかなりまともだと思った。それは完璧ではなく、文書化されていない暗いコーナーが実際にありますが、それでも私見では平均よりもはるかに優れています。
ペテルトレック

@PéterTörökright Maven Referenceも私の応急処置です。どういうわけか私を心配させるもののほとんどは、これらの暗い文書化されていないコーナーで終わることがあります。正確には、これらのコーナーは「文書化されていない」よりも「暗い」と感じています。つまり、知識はそこにあると感じていますが、解読することができません。多分私は不運だと思います。または多分愚かな。それとも人がちょうど彼らのギャングでまともなハイテクライターが不足しているのMaven
ブヨ

1
なぜ、まともなテクライターいるオープンソースプロジェクトを見たことがありますか?;-)
ペーテルTörök

@PéterTörök本当に本当です!:)人気のあるOSSプロジェクトの豪華さは、ドキュメンタリーを「置き換える」専門家がたくさんいることです。Mavenのとそうだったように私には-いつも私はトリッキーなことについて尋ねることができ、誰の周りにいくつかの教祖があった
ブヨ

3

Mavenを数年間使用しています。Antスクリプト(AntがBeanShellをサポートするのと同じように)をサポートしているため、Antの知識はまだ役に立つかもしれません。Mavenははるかに強力ですが、いくつかの追加のインフラストラクチャ要件があります(複数のプロジェクト間でコンポーネントを共有する場合は、ArtifactoryまたはNexusサーバーでビルドをホストする必要があります)。また、Antとはまったく異なるため、既存の知識の多くを活用することはできません。


1

Antはそれ自体で水中で死んでいると思います。すべてのクラスパスの依存関係を手動で(セットアップに応じて)指定しなければならないのは、手作業が多すぎて、エラーが発生しやすくなります。AntをIvyなどの依存関係管理ツールと一緒に使用すると、Antはそのパワーを保持し、依存関係を手動で管理する必要がなくなります。

Mavenと比較した場合のAntのもう1つの問題は、標準化の欠如です。これは他の回答で言及されています。プロジェクトからプロジェクトへ、またはジョブからジョブへと移行するとき、私が見つけた最も厄介なことの1つは、さまざまなAntファイルの新しい標準を学ぶ必要があることです。Mavenの構成に対する規約の目的は、2つの異なるプロジェクトが非常によく似た構造を持ち、Antよりもプロジェクト間の移行がはるかに簡単になることを意味します

Antがまだメインストリームであるかどうかについては、作業している開発環境に依存します。プロジェクトが小さな会社や新興企業の場合、Mavenが自然な選択であり、時間がかかると思いますArtifactoryなどのインフラストラクチャに投資する。ただし、大企業は長年、Antインフラストラクチャ(構成、グローバルビルドファイルなど)に多額の投資を行っているため、多額の投資を行ったテクノロジーからの移行にはあまり熱心ではありません。


0

Mavenは何年もの間増加し続けていますが、今ではそれを学ぶ必要があります。状況は常に変化しており、Antがその地位を失っていることを知ることは悪いことではありません。

Mavenは短期間しか登場しないかもしれませんが、もしそれが私たちの仕事を楽にするなら、学ぶ時間を投資する価値があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.