Ich habe ein kleines Makrodef in eine separate Datei geschrieben:
macrodefs.xml
%Vor%Ich habe eine zweite Datei, meine Haupt-Build-Datei:
build.xml
%Vor%Wie Sie vielleicht vermuten, funktioniert das nicht. Die Fehlermeldung ist etwas wie:
%Vor%Die einzige mögliche Lösung, die ich gefunden habe, ist ein zusätzliches Ziel in der macodefs.xml, um die ant-Aufrufe weiterzuleiten.
Gibt es eine Möglichkeit, das Makrodef aus einer anderen Datei heraus aufzurufen?
Vielen Dank im Voraus.
Sie können import
die Datei verwenden und das Makro wie folgt verwenden:
Beachten Sie, dass Sie in der Makrodefinition @{curlybrackets}
verwenden sollten, wenn Sie auf Makroattribute verweisen:
Am Ende der Ant macrodef
Aufgabe finden Sie einige Beispiele.
Mehr
Was Sie versuchen, wird von Ant nicht gut unterstützt. Mit den Tasks ant
und antcall
kann der 'Angerufene' den Anrufer nicht direkt beeinflussen. Sie können Dateien in die aufgerufene Task schreiben und dann diese im Aufrufer laden. Wie Sie jedoch festgestellt haben, können die vorprozessualen Tasks import
und include
nicht innerhalb eines Ziels aufgerufen werden. Mit den ant / antcall-Tasks können Sie Ziele nur in Unterverzeichnissen und nicht in Makros ausführen.
Eine Problemumgehungsmethode (die der von Ihnen erwähnten ähnlich ist, Ihnen aber erlaubt, die gesamte echte Arbeit in den Build auf oberster Ebene zu setzen) wäre eine innere Builddatei, die den Import der makrodefs auf oberster Ebene enthält .xml.
Etwas wie das Folgende. Die Datei macrodefs.xml ist wie zuvor. (Beachten Sie jedoch, dass die importierten Dateien - einschließlich der Makrodefinitionen - als Ant-Projektdateien abgeschlossen sein müssen, sodass sie ein Projektelement enthalten müssen.)
build.xml:
%Vor%inner-build.xml:
%Vor%Du würdest effektiv
machen %Vor%Das innere Buildfile könnte potentiell durch den Hauptaufbau erzeugt werden - sagen wir, wenn Sie mehrere Makrodefinitionsdateien importieren wollten - aber das wird vielleicht zu unhandlich.