Die „Dir“ von ANT Filesets fehlt bei der Verwendung eines Mapper auf dem absoluten Pfad

StackOverflow https://stackoverflow.com/questions/4859072

  •  27-10-2019
  •  | 
  •  

Frage

Ich habe versucht, eine Ameisenaufgabe zu schreiben, um SASS -Skripte in meinem Projekt mithilfe der Aufgabe anwenden zu "kompilieren", aber ich habe immer wieder einen Fehler "keine solche Datei oder Verzeichnis" erhalten. Ich dachte, es könnte durch Räume im BuildPath verursacht worden sein, also habe ich mir die Mühe gemacht, das Projekt zu bewegen, um festzustellen, dass Ant den Root -Verzeichnis des Dateisets, wenn es den Pfad zurückgibt, zu weglassen scheint. So sieht das Ziel aus:

<target name="sass-compile" depends="properties">
    <apply executable="sass">
        <srcfile />
        <targetfile />

        <fileset dir="${project.src.dir}" includes="**/*.scss"  />
        <globmapper from="*.scss" to="*.css" />
    </apply>
</target>

Um die Fehlerbehebung zu unterstützen, habe ich die ausführbare Datei von Sass auf Echo umgestellt und bemerkte, dass der Mapper solche Pfade verwandelt ...

/User/me/documents/programming/arbeitsspace/project/src/java/com/proj/web/page/template/template.scss

...das mögen...

/Users/me/documents/programming/workspace/project/java/com/proj/web/page/template/template.css

Beachten Sie, dass das SRC -Verzeichnis im Zieldateipfad fehlt. Sehe ich hier einen Fehler oder wird das irgendwie erwartet? Ich würde gerne wissen, was hier los ist. Ich habe auch versucht, einen RegexpMapper und einen Filterapper mit Austausch zu verwenden. Das Ergebnis ist das gleiche.

Ich leite Ant 1.7.1, das mit Eclipse Helios gebündelt wird, die ich auf einem Mac leite. Ich habe auch Ant 1.8 sowohl auf Mac als auch auf Linux ausprobiert. Nichts funktioniert. Hat jemand irgendwelche Ideen?

War es hilfreich?

Lösung

Es ist normales Verhalten. Die Mapper verwenden relativ Wege, nicht absolut. Der Pfad ist relativ zum Arbeitsverzeichnis (wahrscheinlich Basis), das in Ihrem Fall der Elternteil der ist src Verzeichnis.

Das apply Aufgabe (Glob) Mapper liefert Pfade relativ zum in seiner angegebenen Verzeichnis dest Attribut:

Ein einzelner Mapper gibt die Zieldateien relativ zum Dests -Attribut für die Abhängigkeitsprüfung an. Wenn das Dests -Attribut angegeben wird, wird es als Basisverzeichnis zur Lösung von relativen Pfadnamen verwendet, die vom Mapper zurückgegeben werden. Mindestens eine Datei- oder Filelist ist erforderlich.

Der verwendete relative Pfad wird aus dem angegebenen Dateisatz abgeleitet, daher enthalten sie die Führung nicht src Verzeichnis.

Optionen, die mir in den Sinn kommen, sind:

  • Verwenden Sie das basedir des Projekts statt project.src.dir (könnte funktionieren)
  • Geben Sie das Verzeichnis mit <apply dest="src" ... (besser)

Andere Tipps

Es sieht so aus, als würde der Mapper mit dem Inhalt von arbeiten ${project.src.dir}, mit Ausnahme des Ordners selbst.

Können Sie versuchen, den übergeordneten Ordner von anzugeben? src in ${project.src.dir}, sagen ${basedir} Und sehen Sie, ob es das gewünschte Ergebnis erzielt?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top