マッパーを使用するときに絶対パスから欠落しているANTファイルセットの「dir」
質問
私は、Applyタスクを使用してプロジェクトでSASSスクリプトを「コンパイル」するアリタスクを書き込もうとしてきましたが、「そのようなファイルまたはディレクトリ」エラーを取得し続けました。 BuildPathのスペースによって引き起こされたのではないかと思ったので、ANTがパスを返したときにANTがファイルセットのルートディレクトリを省略しているように見えるようにプロジェクトを移動するのに苦労しました。これがターゲットがどのように見えるかです:
<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>
トラブルシューティングを支援するために、実行可能ファイルをSASSからEchoに切り替えました。マッパーがこのようなパスを変換していることに気付きました...
/users/me/documents/programming/workspace/project/SRC/java/com/proj/web/page/template/template.scss
...これに...
/users/me/documents/programming/workspace/project/java/com/proj/web/page/template/template.css
SRCディレクトリがターゲットファイルパスから欠落していることに注意してください。ここでバグを見ていますか、それとも何らかの形で期待されていますか?ここで何が起こっているのか知りたいです。また、regexpmapperと、置換のあるFiltermapperを使用してみました。結果は同じです。
私はAnt 1.7.1を実行しています。これは、Macで走っているEclipse Heliosがバンドルされています。また、MacとLinuxの両方でANT 1.8を試しました。何もうまくいきません。誰かがアイデアを持っていますか?
解決
それは通常の動作です。マッパーが使用します 相対的 パス、絶対ではありません。パスは、あなたの場合、動作(おそらくベース)ディレクトリに関連しています。 src
ディレクトリ。
apply
仕事 (Glob)Mapperは、そので指定されたディレクトリに関連するパスを提供します dest
属性:
単一のマッパーは、依存関係チェックのDEST属性に対するターゲットファイルを指定します。 DEST属性が指定されている場合、マッパーによって返される相対パス名を解決するためのベースディレクトリとして使用されます。少なくとも1つのファイルセットまたはフィルリストが必要です。
使用される相対パスは指定されたファイルセットから派生しているため、主要なものは含まれていません src
ディレクトリ。
思い浮かぶオプションは次のとおりです。
- 使用
basedir
代わりにプロジェクトのproject.src.dir
(機能するかもしれません) - 使用を使用してディレクトリを指定します
<apply dest="src" ...
(より良い)
他のヒント
マッパーはの内容と連携しているようです ${project.src.dir}
, 、フォルダー自体を除外します。
の親フォルダーを指定してみてください src
の ${project.src.dir}
, 、 いう ${basedir}
そして、それが望ましい結果を生成するかどうかを確認しますか?