Apache Maven ist ein sehr beliebtes Build- und Abhängigkeitsverwaltungstool in der Java-Open-Source-Ecosphäre. Ich habe einige Tests durchgeführt, um herauszufinden, ob es kompilierte Free Pascal / Delphi-Einheiten verarbeiten kann und es einfach zu implementieren war. So wäre es möglich,
Diese Art der Abhängigkeitsverwaltung könnte für Open-Source-Projekte sehr nützlich sein, die viele Bibliotheken von Drittanbietern mit komplexen Abhängigkeiten verwenden. Es würde typische Konflikte vermeiden, die durch die Verwendung falscher Versionen verursacht werden.
Für den Entwickler wäre der Workflow zum Bearbeiten und Erstellen eines Projekts auf ein Minimum reduziert:
mvn package
aus, um alle erforderlichen Bibliotheken von Drittanbietern (vorkompilierte Einheiten) automatisch herunterzuladen, wenn sie sich noch nicht im lokalen Repository der Arbeitsstation befinden Die einzige zusätzliche Datei für Apache Maven, die im Projektordner benötigt wird, ist die POM.XML-Datei, die die Projektinformationen enthält.
Edit: Während Maven für einige der benötigten Aufgaben verwendbar ist, hätte die Implementierung einer Lösung wie Maven in nativem Free Pascal einige Vorteile: kein Java SDK erforderlich, Unterstützung für alle Entwicklungsplattformen, auf denen Free Pascal verfügbar ist, Wartung und Plugin-Entwicklung in Pascal.
Die Verwendung eines Maven-ähnlichen Tools wäre nur für Open-Source-Projekte nicht hilfreich - kommerzielle Projekte könnten auf die Artefakte in öffentlichen Maven-Repositories ebenso zugreifen und sie verwenden.
Maven-Features sind unter Ссылка
aufgeführtAktualisierung:
Ein Anwendungsfall könnte der Build von Lazarus sein, wo Maven alle benötigten Bibliotheken herunterladen und den Compiler mit den notwendigen Build-Pfad-Argumenten aufrufen würde. Änderungen in den Abhängigkeiten auf niedrigeren Ebenen werden automatisch bis zum übergeordneten Build weitergegeben.
Mögliche Vorteile:
Update # 2: FPMake
Das FPMake Build-System für Free Pascal scheint ein Werkzeug mit viel Potential zu sein, in vielen Details ist es Maven ziemlich ähnlich :
fppkg <packagename>
sucht in einer Datenbank nach dem Paket, extrahiert es und kompiliert fpmake.pp und führt es aus mvn deploy
oder mvn install
), das Manifest ist eine XML-Datei, die einer pom.xml in Maven sehr ähnlich sieht: FPMake-Manifestdatei:
%Vor%Freepascal hat an einem eigenen Paketsystem gearbeitet, das zwischen apt-get und freebsd ports style geht. (Download Quelle / Build / Installation automatisch), genannt fppkg. Aber die Arbeit ist ins Stocken geraten. Menschen, die Zeit investieren, sind der Engpass, nicht Menschen, die Werkzeuge wählen wollen.
Soweit Maven geht, mag ich keine Hilfswerkzeuge, die eine Installation von großen externen Laufzeiten benötigen. Es könnte für eine große App (wie Open Office) in Ordnung sein, aber nicht für ein Util.
Ich bevorzuge auch ein Werkzeug, das auf die Realität und den Workflow der FPC abgestimmt ist. Dokumentationstools, Build-Tools, Download-Systeme, Testsuite-Systeme sind bereits vorhanden, es braucht nur eine Person, die viel Zeit dafür aufwendet, um dies zu ermöglichen.
Einige typische Probleme bei der Einführung einer neuen Technologie in einem Projekt als FPC, und warum es eine Tendenz hat, seine eigenen Werkzeuge zu machen:
Dies alles führt zu der effektiven Praxis, dass eigene Tools in Pascal mit minimalem Scripting am besten funktionieren. Einige Werkzeuge verwendet:
Wenn jemand Maven wirklich ernst nimmt, frage ich ihn normalerweise:
Beachten Sie, dass Sie in einer Firma nur die für den Anwendungsserver verantwortliche Person kicken. Aber in einer informellen Umgebung ist dies viel schwieriger, besonders langfristig, da das Leben, die Beschäftigung und die Zeit, die der Mensch für das Projekt benötigt, variieren.
Klingt nach einem interessanten Plan, aber die Delphi-Gemeinschaft (und FPC, mehr noch, ich könnte es mir vorstellen!) schätzt Bibliotheken als Quelle weit mehr als vorkompilierte Bibliotheken. Der allgemeine Konsens ist, dass jeder, der eine Binary-Only-Bibliothek verwendet, aus zwei Gründen ein Dummkopf ist: Sie können keine Fehler beheben, die darin enthalten sind, und Änderungen am Compiler beeinträchtigen die Kompatibilität.
Tags und Links maven delphi build-automation freepascal fpmake