So rufen Sie ein Makrodef aus einer anderen Datei auf

8

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.

    
scheffield 18.02.2011, 16:38
quelle

1 Antwort

14

Sie können import die Datei verwenden und das Makro wie folgt verwenden:

%Vor%

Beachten Sie, dass Sie in der Makrodefinition @{curlybrackets} verwenden sollten, wenn Sie auf Makroattribute verweisen:

%Vor%

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.

    
martin clayton 18.02.2011, 17:08
quelle

Tags und Links