Das Herausfinden von Paketabhängigkeiten ist wirklich nicht so schwierig. Du machst es sowieso selten. Wahrscheinlich einmal während der Projekteinrichtung und einige weitere während der Aktualisierung. Mit maven beheben Sie am Ende nicht übereinstimmende Abhängigkeiten, schlecht geschriebene Poms und führen ohnehin Paketausschlüsse durch.
Nicht so schwer ... für Spielzeugprojekte. Aber die Projekte, an denen ich arbeite, haben viele, wirklich viele, und ich bin sehr froh, sie transitiv zu bekommen, um ein standardisiertes Namensschema für sie zu haben. All dies manuell von Hand zu verwalten, wäre ein Albtraum.
Und ja, manchmal muss man an der Konvergenz von Abhängigkeiten arbeiten. Aber denken Sie zweimal darüber nach, dies ist Maven nicht eigen, dies ist jedem System eigen, das Abhängigkeiten verwendet (und ich spreche hier allgemein von Java-Abhängigkeiten).
Also mit Ant musst du dasselbe tun Arbeit außer dass Sie alles manuell erledigen müssen: eine Version von Projekt A und seinen Abhängigkeiten abrufen, eine Version von Projekt B und seine Abhängigkeiten abrufen, selbst herausfinden, welche genauen Versionen sie verwenden, überprüfen dass sie sich nicht überlappen, prüfen, ob sie nicht inkompatibel sind usw. Willkommen in der Hölle.
Auf der anderen Seite unterstützt Maven das Abhängigkeitsmanagement und ruft sie transitiv für mich ab und bietet mir die Werkzeuge, die ich zum Verwalten der Komplexität des Abhängigkeitsmanagements benötige : Ich kann einen Abhängigkeitsbaum analysieren, die in transitiven Abhängigkeiten verwendeten Versionen steuern und einige davon ausschließen Sie steuern bei Bedarf die Konvergenz zwischen Modulen usw. Es gibt keine Magie. Aber zumindest hast du Unterstützung.
Und vergessen Sie nicht, dass das Abhängigkeitsmanagement nur ein kleiner Teil dessen ist, was Maven bietet. Es gibt noch viel mehr (ohne die anderen Tools zu erwähnen, die sich gut in Maven integrieren lassen, z . B. Sonar ).
Langsamer FIX-COMPILE-DEPLOY-DEBUG-Zyklus, der die Produktivität beeinträchtigt. Das ist mein Hauptproblem. Wenn Sie eine Änderung vornehmen, müssen Sie warten, bis der Maven-Build aktiviert ist, und warten, bis er bereitgestellt wird. Keine heiße Bereitstellung.
Erstens, warum benutzt du Maven so? Ich nicht. Ich verwende meine IDE, um Tests zu schreiben, Code zu schreiben, um sie zu überarbeiten, umzugestalten, bereitzustellen, im laufenden Betrieb bereitzustellen und einen lokalen Maven-Build auszuführen, wenn ich fertig bin, bevor ich ein Commit durchführe, um sicherzustellen, dass ich den kontinuierlichen Build nicht unterbreche.
Zweitens bin ich mir nicht sicher, ob die Verwendung von Ant die Dinge viel besser machen würde. Und meiner Erfahrung nach bieten modulare Maven-Builds mit binären Abhängigkeiten eine schnellere Build-Zeit als typische monolithische Ant-Builds. Werfen Sie einen Blick auf Maven Shell, um eine (wieder) verwendbare Maven-Umgebung zu erhalten (was übrigens fantastisch ist).
Am Ende, und es tut mir leid, das zu sagen, ist es nicht wirklich Maven, der Ihre Produktivität beeinträchtigt, sondern Sie missbrauchen Ihre Werkzeuge. Und wenn Sie damit nicht zufrieden sind, was soll ich sagen, verwenden Sie es nicht. Persönlich benutze ich Maven seit 2003 und habe nie zurückgeschaut.