パッケージの依存関係を把握することはそれほど難しくありません。とにかくめったにそれをしません。おそらく、プロジェクトのセットアップ中に1回、アップグレード中に数回です。mavenを使用すると、依存関係の不一致、pomの記述が不適切、そしてパッケージの除外を実行することになります。
それほど難しいことではありません...おもちゃのプロジェクトでは。しかし、私が取り組んでいるプロジェクトには多くの、本当に多くのプロジェクトがあり、それらを推移的に取得して、それらの標準化された命名体系を作成できてとても嬉しく思います。これらすべてを手動で手動で管理することは悪夢です。
そして、はい、依存関係の収束に取り組む必要がある場合があります。しかし、これを2回考えてみてください。これはMavenに固有のものではなく、依存関係を使用するすべてのシステムに固有のものです(ここでは、Javaの依存関係一般について説明しています)。
Ant を使用する場合は、すべてを手動で行う必要があることを除いて、同じ作業を行う必要があります。プロジェクトAのバージョンとその依存関係を取得し、プロジェクトBのバージョンとその依存関係を取得し、使用する正確なバージョンを確認し、確認します。重複しないこと、互換性がないことの確認など。地獄へようこそ。
一方、Mavenは依存関係管理をサポートし、それらを一時的に取得して、依存関係管理に固有の複雑さを管理するために必要なツールを提供します。依存関係ツリーを分析し、推移的な依存関係で使用されるバージョンを制御し、一部を除外できますそれらは場合に必要な、魔法はありませんなど、モジュール間で収束を制御します。しかし、少なくともあなたはサポートしています。
そして、依存関係の管理はMavenが提供する機能のごく一部であり、はるかに多くの機能があることを忘れないでください(Mavenとうまく統合する他のツール、たとえばSonarについてさえ言及していません)。
FIX-COMPILE-DEPLOY-DEBUGサイクルが遅く、生産性が低下します。これが私の主な不満です。変更を加えたら、Mavenビルドが開始されるのを待ち、それがデプロイされるのを待つ必要があります。ホットデプロイメントはまったくありません。
まず、なぜこのようにMavenを使用するのですか?私はしません。私はIDEを使用して、テスト、コードがパスするまでコードを記述し、リファクタリング、デプロイ、ホットデプロイし、完了前にローカルMavenビルドを実行してからコミットする前に、継続的なビルドを中断しないようにします。
第二に、Antを使用することで状況が大幅に改善されるかどうかはわかりません。そして、私の経験では、バイナリ依存関係を使用したモジュラーMavenビルドは、典型的なモノリシックAntビルドよりもビルド時間を短縮します。とにかく、Maven Shellを見て、Maven環境を(再)使用する準備ができていることを確認してください(ちなみに、これは素晴らしいです)。
結局のところ、申し訳ありませんが、生産性を低下させているのは実際にはMavenではなく、ツールの誤用です。そして、あなたがそれに満足していないなら、まあ、私が言うことができる、それを使用しないでください。個人的には、2003年からMavenを使用しており、振り返ることはありません。