即使PHPLoc位于include_path中,Phing phpLocTask也不起作用

时间:2014-07-08 21:51:30

标签: php phing

我正在使用build.xml将Ant phing转换为项目。其中一个目标是使用phploc,我使用<phploc/>任务将其转换为目标。我收到了错误消息:

Execution of target "phploc" failed for the following reason: \
/Users/david/workspace/phoenix/build-test/build.xml:44:17: \ 
/Users/david/workspace/phoenix/build-test/build.xml:44:17: \
PHPLocTask depends on PHPLoc being installed and on include_path.

我已下载PHPLoc,该文件已作为*.phar文件分发,并按照README.md中的说明进行操作。

$ phploc -help
phploc 2.0.6 by Sebastian Bergmann.

Usage:
  phploc [--names="..."] [--names-exclude="..."] [--count-tests] [--git-repository="..."] [--exclude="..."] [--log-csv="..."] [--log-xml="..."] [--progress] [values1] ... [valuesN]
...

我仍然收到相同的错误消息。我找到了include_path

$ php -i 2> /dev/null | grep "^include_path"
include_path => .:/usr/local/php/includes:/usr/local/pear/share/pear:/usr/lib/php/pear => .:/usr/local/php/includes:/usr/local/pear/share/pear:/usr/lib/php/pear

并将phploc复制到/usr/local/php/includes,但无论是PHPLoc还是phploc,我仍会收到相同的错误消息。

我在/usr/lib/php/pear/phing/Phing/tasks/ext/phploc/PHPLoc.php找到了phploc任务:

public function main()
{
    /**
     * Find PHPLoc
     */
    if (!class_exists('\SebastianBergmann\PHPLOC\Analyser')) {
        if (!@include_once('SebastianBergmann/PHPLOC/autoload.php')) {
            if (!@include_once('PHPLOC/Analyser.php')) {
                throw new BuildException(
                    'PHPLocTask depends on PHPLoc being installed and on include_path.',
                    $this->getLocation()
                );
            } else {
                $this->oldVersion = true;
            }
        }
    }

第一个class_exists语句未返回 true 值,而include_once未获取包含的文件。我想知道这是因为phploc是一个PHAR包而不是单个文件。

我总是可以执行<exec/><apply/>任务,但我认为使用已定义的任务会更好。

安装 phploc我需要做什么,所以<phploc> Phing任务可以找到它?

2 个答案:

答案 0 :(得分:4)

PEAR频道现已关闭。你应该在你的build.xml中添加这样的东西:

<php expression="include('/var/lib/jenkins/.composer/vendor/autoload.php')"/>

并作为Jenkins用户

全局安装作曲家的所有依赖项
composer global require 'phploc/phploc=*'

或将所有工具包含到您的项目中并设置正确的自动加载文件

答案 1 :(得分:0)

信息不在phploc页面上,但经过所有文件和一些谷歌搜索,我发现我可以做到以下几点:

$ sudo pear channel-discover pear.phpunit.de
$ sudo pear channel-discover pear.symfony.com
$ sudo pear channel-discover pear.netpirates.net
$ sudo pear install phpunit/phploc

这将通过Pear安装phploc,而Phing可以使用它。 Phar套餐似乎与Phing没有合作。