使用phing / phingcall在内部调用目标时的返回值

时间:2011-07-22 08:47:50

标签: return-value target phing

我通过phingcall命令调用目标。 我想从被调用目标传回一个状态变量,或者至少从调用目标更改现有值。 目标:如果子目标失败,我想用属性指示,我想在我的主目标控制逻辑中分支。 下面的代码不起作用。任何想法如何使其工作或我的目标的替代方法?

谢谢,  尔根

<target name="main">
    <echo>target a</echo>
    <echo>${bOk}</echo>
    <exec command="echo 1" outputProperty="bOk" />
    <echo>bOk is 1: ${bOk}</echo>
    <phingcall inheritRefs="true" target="sub">
    </phingcall>
    <echo>bOk should now be 0: ${bOk}</echo>
</target>

<target name="sub">
    <echo>target b</echo>
    <echo>bOk is 1: ${bOk}</echo>
    <exec command="echo 0" outputProperty="bOk" />
    <echo>bOk now is 0: ${bOk}</echo>
</target>

这里的问题是

   <echo>bOk should now be 0: ${bOk}</echo>

回声

   bOk should now be 0: 1

1 个答案:

答案 0 :(得分:3)

即使在#phing IRC的帮助下,我无法解决问题。 我决定编写一个自定义任务来解释目标之间的数据传递:

<?php

require_once "phing/Task.php";

class rvGlobalTask extends Task {

    private static $bOk = 1;
    private $sMode = null;
    private $bValue = null;
    private $outputProperty = null;

    public function setSMode( $sMode ) {
        $this->sMode = $sMode;
    }
    public function setBValue( $bValue ) {
        $this->bValue = $bValue;
    }
    public function setOutputProperty( $outputProperty ) {
        $this->outputProperty = $outputProperty;
    }

    public function main() {
        if ( $this->sMode == "set" ) {
            rvGlobalTask::$bOk = $this->bValue;
        } else {
            $this->project->setProperty(
                $this->outputProperty,
                rvGlobalTask::$bOk
            );
        }
    }
}
?>

这对我的问题很好。也许其他人也觉得这很有用。