我有一个像这样的目录结构:
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(必须是phing)来实现这一点:
<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”这样的直接名字。我不知道如何削减“.php”以创建正确的目录,因为phing mappers不会在这里工作。我也不知道如何复制xml文件。这必须是通用的,并且构建在windows xp下运行。
感谢任何帮助。
答案 0 :(得分: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>
我可能会在以后测试它。