Domanda

Ho provato a scrivere un'attività di formica per "compilare" gli script Sass nel mio progetto usando l'attività applicabile, ma ho continuato a ottenere un errore "nessun file o directory". Ho pensato che potesse essere stato causato da spazi nel percorso di build, quindi ho riscontrato il problema di spostare il progetto solo per scoprire che Ant sembra omettere la directory principale del set di set quando restituisce il percorso. Ecco come appare l'obiettivo:

<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>

Per aiutare a risolvere i problemi, ho cambiato l'eseguibile da sass a eco e ho notato che il mapper sta trasformando percorsi come questo ...

/Utenti/me/documenti/programmazione/spazio di lavoro/progetto/src/java/com/proj/web/page/template/template.scss

... in questo ...

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

Si noti che la directory SRC manca dal percorso del file di destinazione. Sto vedendo un bug qui o questo è in qualche modo previsto? Mi piacerebbe sapere cosa sta succedendo qui. Ho anche provato a usare un regexpmapper e un filtro con sostituzione. Il risultato è lo stesso.

Sto eseguendo Ant 1.7.1, che viene in bundle con Eclipse Helios, che sto correndo su un Mac. Ho anche provato Ant 1.8 su Mac e Linux. Niente funziona. Qualcuno ha qualche idea?

È stato utile?

Soluzione

È un comportamento normale. I mapper usano parente percorsi, non assoluti. Il percorso sarà relativo alla directory di lavoro (probabilmente base), che nel tuo caso è il genitore del src directory.

Il apply compito (Glob) Mapper fornisce percorsi relativi alla directory specificata nella sua dest attributo:

Un singolo mapper specifica i file di destinazione relativi all'attributo DEST per il controllo della dipendenza. Se viene specificato l'attributo DEST, verrà utilizzato come directory di base per la risoluzione dei nomi dei percorsi relativi restituiti dal mapper. È richiesto almeno un set di file o filelist.

Il percorso relativo utilizzato deriva dal set di file specificato, quindi non contengono il principale src directory.

Le opzioni che mi vengono in mente sono:

  • Utilizzare il basedir del progetto anziché project.src.dir (potrebbe funzionare)
  • Specificare la directory utilizzando <apply dest="src" ... (meglio)

Altri suggerimenti

Sembra che il mapper stia lavorando con il contenuto di ${project.src.dir}, escluso la cartella stessa.

Puoi provare a specificare la cartella principale di src in ${project.src.dir}, dire ${basedir} E vedi se produce il risultato desiderato?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top