0

次のようなディレクトリ構造を取得しました。

plugins (directory)
- file1.php
- file1.xml
- file2.php
- file2.xml
- file3.php
- file3.xml
...

私が必要とするのは、次のようなディレクトリ構造です。

plugins (directory)
- file1 (directory)
-- file1.php
-- file1.xml
- file2 (directory)
-- file2.php
-- file2.xml
- file3 (directory)
-- file3.php
-- file3.xml
...

私は、次のように Phing (ping である必要があります) でそれを達成しようとしています:

<foreach param="file" absparam="absfilename" target="constructplugins">
  <fileset dir="${dir.root}/plugins/">
    <include name="*.php"/>
  </fileset>
</foreach> 

<target name="constructplugins"  description="constructplugins">
<mkdir dir="${dir.tmp}/build/plugins/${file}" />
<copy file="${absfilename}" todir="${dir.tmp}/build/plugins/${file}" />
</target>

ご覧のとおり、「file1.php」のようなディレクトリ名が付けられます。ここではpingマッパーが機能しないため、「.php」を切り取って適切なディレクトリを作成する方法がわかりません。また、xmlファイルをコピーする方法もわかりません。これは一般的なものである必要があり、ビルドは Windows XP で実行されます。

どんな助けでも大歓迎です。

4

1 に答える 1

2

私はこれをテストしていませんが、「PhpEvalTask​​」で可能になるはずです。

<foreach param="file" absparam="absfilename" target="constructplugins">
  <fileset dir="${dir.root}/plugins/">
    <include name="*.php"/>
  </fileset>
</foreach> 

<target name="constructplugins"  description="constructplugins">
  <php expression="preg_replace('/\\.[^.\\s]{3,4}$/', '', ${file})" returnProperty="filename"/>
  <mkdir dir="${dir.tmp}/build/plugins/${filename}" />
  <copy file="${absfilename}" todir="${dir.tmp}/build/plugins/${filename}/${file}" />
</target>

後でテストするかもしれません。

于 2011-01-20T13:41:52.287 に答える