Imperative vs Deklarative build-Systeme
Ich habe vor kurzem angefangen mit Gradle als build-system.
Sie ersten Vergleich, dass Gradle macht mit Leuten wie Ant und Maven ist, dass,
Ant ist ein Imperativ build-system, in der Erwägung, dass Maven ist ein deklarative build-system.
Während Gradle ist ein deklarative build-system, ohne die Steifigkeit erzwungen durch Maven.
Wollte ich diese Begriffe verstehen deklarative und Imperativ besser beim sprechen über build-Systeme.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurz gesagt, ein ant-Skript erzählt die ant-tool, was zu tun ist - "kompilieren Sie diese Dateien und kopieren Sie in diesen Ordner. Dann nehmen Sie den Inhalt dieses Ordners und erstellen Sie ein Archiv."
Während ein maven
pom
erklärt , was wir gerne haben würden, als das Ergebnis - "hier sind die Namen der Bibliotheken des Projekts abhängt, und wir möchten, dass die Generierung eines web-Archiv". Maven weiß, wie man Holen Sie die Bibliotheken und wo finden Sie die Quelle der Klassen auf seine eigene.Während ant gibt Ihnen mehr Flexibilität, es auch zwingt Sie dazu, ständig das Rad neu erfinden.
Maven auf der anderen Seite erfordert weniger Konfiguration, kann aber das Gefühl zu eng, vor allem, wenn Sie verwendet werden, um einen anderen workflow.
EDIT: Ein wichtiger Aspekt des ant-maven-Vergleich ist, dass maven hat eine übereinkommen, zu beschreiben, wo die Dateien liegen sollten, wo die Abhängigkeiten gefunden, wo man das resultierende Artefakt, während die Ameise nicht.
So können Sie denken, der Verwendung von maven wie in einem bus - Sie wählen die Haltestelle, wo Sie angeben, und die eine, wo Sie verlassen. Mit Hilfe von ant ist wie Autofahren - Sie haben es selbst zu tun. Sie müssen nicht zu sagen, der Busfahrer, was zu tun ist, aber die Haltestellen zu weit aus, wo Sie wollen zu gehen.
EDIT2: 'das Rad neu Erfinden' Metapher scheint zu sein, weniger deutlich als ich gehofft hatte. Dies ist, was ich meine:
Ohne sinnvolle defaults/Konventionen zu können, definieren Sie die Projektstruktur und die build-lifecycle-explizit für jedes Projekt, oft macht es die Sache von Geschmack und Meinung. Als Einstellungen variieren zwischen teams und Unternehmen, die so tun, build-Prozesse. Dies erfordert mehr kognitive Aufwand für neue Projekt-Mitglieder und später Betreuer. Abhängig von der Erfahrung und dem know-how der Entwickler, die endgültige Lösung kann schwierig sein, zu erweitern und zu nutzen.
Als ich sagte in einem Kommentar unten, während der best practices für ant-builds existieren, Sie haben immer noch umgesetzt werden für jedes Projekt oder Kopie-aufgeklebt von Projekt zu Projekt, anstatt immer eine out-of-the-box-Standard für den build-tool selbst.
Maven ist ein bisschen zu weit auf der anderen Seite der trade-off für meinen Geschmack. Ändern der Standardeinstellungen ist nicht so einfach, wie es werden könnte und sollte.