0

このような Phing ループが与えられた場合

<target name="lessc">
  <exec command="lessc ${absolute-filename}" logoutput="false" output="${project.basedir}/public/assets/css/libraries/${filename}" />
</target>

<target name="build-in-loop">
  <foreach param="filename" absparam="absolute-filename" target="lessc">
    <fileset dir="${project.basedir}/assets/less/libraries/">
      <include name="*.less"/>
    </fileset>
  </foreach>
</target>

ターゲットlesscで、変数から拡張子なしのファイル名を抽出するにはどうすればよいですabsolute-filenameか? 上記の例では、outputファイルには拡張子が付けられますが、.less明らかに必要なものではありません。

より少ない目的で作成されたタスクがあり、この特定の操作をサポートするために Phing を拡張できることは知っていますが、Phing が基本的に変数の単純な文字列操作を許可するかどうかを最初に知りたいです。

4

1 に答える 1

0

答えが見つかりました。それが最善の解決策かどうかはわかりませんが、私にとってはうまくいきます:

マッパータグを使用するだけです

    <mapper type="glob" from="*.less" to="*"/>

foreachループ内で、次のようにします。

<target name="build-in-loop">
  <foreach param="filename" absparam="absolute-filename" target="lessc">
    <fileset dir="${project.basedir}/assets/less/libraries/">
      <include name="*.less"/>
    </fileset>
  </foreach>
</target>

この時点で${filename}targetタスクの変数には、拡張子のないファイル名が含まれます。

于 2012-11-22T16:26:51.440 に答える