Question

J'ai essayé d'écrire une tâche Ant pour « compilation » scripts Sass dans mon projet à l'aide de la tâche d'application mais je continué à obtenir un « Aucun fichier ou répertoire » erreur. Je pensais que cela aurait été causé par des espaces dans le Buildpath donc je suis passé par la peine de faire avancer le projet pour constater que Ant semble omettre le répertoire racine de l'ensemble de fichiers quand il renvoie le chemin. C'est ce que les regards cibles comme:

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

Pour vous aider à résoudre, je mis l'exécutable à partir SASS à l'écho et je remarque que le mappeur transforme les chemins comme celui-ci ...

/ Users / Me / Documents / Programmation / Espace de travail / projet / src /java/com/proj/web/page/template/Template.scss

... dans ce ...

/Users/me/Documents/Programming/workspace/Project/java/com/proj/web/page/template/Template.css

Notez que le répertoire src est manquant dans le chemin du fichier cible. Suis-je voir un bug ici ou est-ce en quelque sorte attendu? J'aimerais savoir ce qui se passe ici. J'ai aussi essayé d'utiliser un regexpmapper et un filtermapper avec replaceString. Le résultat est le même.

Je suis en cours d'exécution Ant 1.7.1, qui est livré avec Eclipse Helios, que je suis sur un Mac. J'ai essayé aussi Ant 1.8 sur Mac et Linux. Rien ne fonctionne. Est-ce que quelqu'un a des idées?

Était-ce utile?

La solution

Il est un comportement normal. Les cartographes utilisent les chemins relatifs , et non absolue. Le chemin sera relatif au répertoire de travail (probablement de base), ce qui dans votre cas est le parent du répertoire src.

La tâche apply (glob) Mapper fournit des chemins relatifs au répertoire spécifié dans son attribut dest:

Une seule mappeur spécifie la cible les fichiers relatifs à l'attribut dest pour la vérification des dépendances. Si le dest attribut est spécifié, il sera utilisé un répertoire de base pour résoudre des chemins relatifs retournés par le Mapper. Au moins un ensemble de fichiers ou Liste des fichiers est nécessaire.

Le chemin relatif utilisé est dérivé du fileset spécifié, par conséquent, ils ne contiennent pas le premier répertoire src.

Les options qui viennent à l'esprit sont:

  • Utilisez le basedir du projet au lieu de project.src.dir (pourrait fonctionner)
  • Indiquez le répertoire à l'aide <apply dest="src" ... (mieux)

Autres conseils

Il semble que le mappeur travaille avec le contenu de ${project.src.dir}, à l'exclusion du dossier lui-même.

Pouvez-vous essayez de spécifier le dossier parent de src dans ${project.src.dir}, dire ${basedir} et voir si elle produit le résultat souhaité?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top