如何更改Phing中的执行目录


How to change execution dir in Phing?

也许我没有得到什么,但我在任何地方都找不到如何更改特定目标的执行目录。

这是我的设置:

project
│   composer.json
│   build.xml
└───htdocs
    │   phpunit.xml
    ├───app
    │   │   bootstrap.php
    │   │   ...

我在项目文件夹中运行phing,但由于phpunit的引导程序中的具体情况,我需要bootstrap.php中的getcwd()来解析为htdocs

目前,我尝试在exec中添加cd,但这似乎不起作用。

<target name="phpunit" description="Run unit tests" depends="install">
    <!-- move to app root before running tests -->
    <exec logoutput="true" command="cd ${app}" />
    <phpunit haltonfailure="false"
             haltonerror="false"
             printsummary="true"
             codecoverage="true">
        <formatter type="xml" todir="${project.basedir}/build/logs"/>
    </phpunit>
    <!-- Move back to project root -->
    <exec logoutput="true" command="cd ${project.basedir}" />
</target>

Phing(改变当前目录)中有这样的概念吗?或者有其他可能的解决方案来改变getcwd()在phpunit的引导程序中的工作方式吗?

您可以尝试使用从htdocs执行phing

 phing -f ../build.xml phpunit

查找build.xml示例:

<project name="Test" basedir="." default="list">
    <target name="list">
        <getcwd />
    </target>
 <adhoc-task name="getcwd"><![CDATA[
      class GetcwdTask extends Task {
          function main() {
              print(getcwd());
          }
      }
  ]]></adhoc-task>
</project>