Ich erwäge, ein Maven-Projekt, das ich verwalte, auf Apache-Ant/Ivy umzustellen. Ich brauche mehr Kontrolle über den Build-Prozess und bin mit Maven sehr frustriert. Bitte keine Kommentare darüber, wie toll Maven ist. Meine Frage bezieht sich auf Ivy.
Ich möchte eine "Standard"-Ant-Build-Vorlage einrichten, die später für andere Projekte mit minimalen Änderungen verwendet werden kann.
Ich werde ein zentrales "Unternehmens"-Repository einrichten, in dem wir Bibliotheken von Drittanbietern ablegen können, die nicht in den öffentlichen Maven-Repositories verfügbar sind (z. B. kommerzielle Bibliotheken, Sun-Bibliotheken, proprietäre Bibliotheken usw.). Dieses Unternehmens-Repository wird in unserem lokalen LAN verfügbar sein, ist aber möglicherweise nicht von außerhalb des Büros zugänglich.
Jeder Entwickler hat ein privates Repository in ~/.ivy/repository
. Ich möchte, dass der Ant-Build dieses private Repository automatisch mit geänderten Versionen von Bibliotheken aus dem Unternehmens-Repository aktualisiert.
En ~/.ivy/ant
Ich plane, "Standard"-Module für die Einbeziehung in das individuelle Projekt zu platzieren build.xml
Dateien, unter Verwendung der include
Aufgabe in Ant 1.8. Diese Module bieten Dinge wie Scala
y Clojure
Kompilierungsziele mit verschiedenen Versionen für verschiedene Scala- und Clojure-Versionen (z.B.: scala-compile-2.9.1.xml
, clojure-compile-1.3.xml
Die Build-Module sind im Unternehmens-Repository verfügbar und sollten automatisch in den privaten Repositories aktualisiert werden, wenn sie sich ändern.
Jedes Projekt wird einer Standard-Maven-Verzeichnisstruktur folgen: ${project}/src/main/java
, ${project}/target/classes
etc.
In der Vergangenheit habe ich versucht, Ivy zu verwenden, aber die Ant-Build-Dateien wurden sehr groß (> 500 Zeilen für die Template-Build-Datei) und schwer zu verwalten/bearbeiten. Ich hoffe, dass ich durch die Aufnahme von Standardzielen in ihre eigenen Build-Module in der ~/.ivy/ant
Verzeichnis, kann ich diese Codeaufblähung vermeiden.
Ist das machbar? Liege ich da völlig falsch? Die einzige Dokumentation, die ich über Ivy finden kann, ist auf der Apache-Website (http://ant.apache.org/ivy). Gibt es noch andere Dokumentationen, einschließlich Bücher?